Questo perché il Abstract Equality Comparison Algorithm richiede che se Type(x)
o Type(y)
è un booleana nell'espressione x == y
allora il valore booleano dovrebbe essere costretto a un numero tramite ToNumber
, che converte true
a 1 e false
a +0
.
Ciò significa che qualsiasi confronto di true == something
o something == true
risultati in 1 == something
o something == 1
(sostituzione true
e 1
con false
e +0
per false
).
The Null type non confronta come uguale a 1 o +0 (infatti, null è paragonabile solo a undefined
nell'AECA).
C'è una discussione dettagliata di tutti i diversi tipi di uguaglianza in JavaScript su MDN che vale la pena esaminare se vuoi saperne di più.
Tuttavia, se si costringere null
ad un numero che è coerced to +0
così +null == false
in realtà restituisce true
.
fonte
2014-12-24 06:30:07
Entrambi pari falso perché nulla non è uguale vero o falso. Proprio come '1' non corrisponde a' "pizza" 'o' {} '. Se usato da solo in like se le istruzioni vengono forzate a booleano false perché è un valore di falso –
Null è un valore letterale e false è booleano, possono essere entrambi tipi non comparabili –
perché JavaScript –