Por que os pseudos funcionais como: not () e: has () permitem argumentos citados?

Aparentemente, como eu descobri ao comentaroutra resposta, jQuery (em vez disso, seu mecanismo de seleção subjacenteChiar) permite citar o argumento para o:not() selector, bem como o:has() selector.A saber:

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

NoSeletores padrão, aspas são sempre representativas de uma string e nunca de um seletor ou uma palavra-chave, então citando o argumento para:not() é sempre inválido.Isso não será alterado nos Seletores 4.

Você também pode ver que é uma sintaxe não padrão adicionando umaseletor CSS não suportado tal como:nth-last-child(1) fazendo com que o seletor falhe completamente:

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

Existe algum bom motivo, técnico ou não, para permitir orçamentos aqui? As únicas possibilidades que vêm à mente são:

Consistência com:contains() que permite tanto argumentos citados como não citados, como visto ema antiga especificação dos Seletores. Exceto:contains() aceita cadeias / palavras-chave, não seletores ...

Consistência com a implementação de pseudos personalizados usando$.expr[':'], que sempre permite argumentos citados e não citados.

Consistência e facilidade de portabilidade para seus equivalentes de métodos.not() e.has() (apenas remova ou divida as aspas externas e troque os dois pontos por pontos).

Mas não consigo encontrar fontes para apoiá-las ou opor-se a elas. Na verdade, a capacidade de citar argumentos do seletor em si não é documentada em nenhum lugar, tampouco parece haver qualquer diferença entre citar e não citar o argumento:

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

questionAnswers(1)

yourAnswerToTheQuestion