Sim, por exemplo, typeof x == "string"
é funcionalmente exatamente igual a typeof x === "string"
.
No entanto, x == " "
, não é nem remotamente igual a x === " "
, pois uma string cheia de espaços em branco é coerente com 0
e 0 == " " //true
ou false == " " //true
.
===
é escrito porque a carga cognitiva extra necessária para julgar cada cenário individualmente para possíveis economias de um caractere simplesmente não vale a pena. Aposto que você ou a maioria dos programadores nem sabia sobre as strings de espaço em branco. Seu cérebro precisa confirmar que == "final"
não está em nenhum caso, e só então você pode continuar a escrevê-lo.
Você pode me acordar no meio da noite e eu vou recitar todas as regras Uma exceção notável é E espere, tem mais. De especificação ECMAScript implementations must recognise all of the white space characters defined in Unicode 3.0. Later editions of the Unicode Standard may define other white space characters. ECMAScript implementations may recognise white space characters from later editions of the Unicode Standard Isso implica que a operação Por exemplo: Dá ==
e casos de canto de cor, mas isso não significa que eu vou querer passar por eles toda vez
== null
, que deve ser memorizada como "indefinida ou nula" e é especialmente suportada pelo jshint que, de outra forma, aplica ===
.
==
é implementação definida para comparações de string e boolean / object / number function equals( x ) {
return x == "\ufeff\ufeff";
}
alert(equals(0));
true
no Firefox, mas false
no Chrome.