¿Por qué los pseudos funcionales tales como: not () y: has () permiten argumentos citados?

Al parecer, como he descubierto al comentar sobreotra respuesta, jQuery (más bien su motor selector subyacente)Chisporrotear) le permite citar el argumento a la:not() selector así como el:has() selector.Esto es:

$('div:not("span")')
$('span:has("span")')

En elSelectores estandar, las comillas son siempre representativas de una cadena y nunca de un selector o una palabra clave, por lo que citan el argumento a:not() siempre es inválidoEsto no cambiará en los selectores 4.

También puede ver que es una sintaxis no estándar agregando unSelector de CSS no compatible como:nth-last-child(1) haciendo que el selector falle completamente:

$('div:not("span"):nth-last-child(1)')
$('span:has("span"):nth-last-child(1)')

¿Hay alguna buena razón, técnica o de otro tipo, para permitir citas aquí? Las únicas posibilidades que vienen a la mente son:

Consistencia con:contains() que permite tanto los argumentos citados como los no citados, como se ve enla vieja especificación selectores. Excepto:contains() acepta cadenas / palabras clave, no selectores ...

Consistencia con la implementación de pseudos personalizados utilizando.$.expr[':'], que siempre permite argumentos entre comillas y sin comillas.

Consistencia y facilidad de adaptación a sus homólogos de método..not() y.has() (¿simplemente eliminar o dividir las comillas externas y cambiar los dos puntos a puntos?).

Pero no puedo encontrar ninguna fuente para apoyarlos o oponerme. De hecho, la capacidad de citar los argumentos selectores tampoco está documentada en ninguna parte, ni parece haber ninguna diferencia entre citar y no citar el argumento:

$('div:not(span)')
$('span:has(span)')

Respuestas a la pregunta(1)

Su respuesta a la pregunta