Come dovrei capire questi?domanda confronto confronto (null> = 0)
null>0
> false
null==0
> false
null>=0
> true
Come dovrei capire questi?domanda confronto confronto (null> = 0)
null>0
> false
null==0
> false
null>=0
> true
Gli operatori relazionali (>=
e <=
), eseguire coercizione di tipo (ToPrimitive
), con un tipo di suggerimento Number
, tutti gli operatori relazionali presenti hanno questo comportamento .
È possibile visualizzare i dettagli interni di questo processo nello The Abstract Relational Comparison Algorithm.
D'altra parte, il Equals operator (==
), se un operando è null
restituisce solo true
se l'altro è uno null
o undefined
, nessun tipo coercizione numerico è fatto.
null == undefined; // true
null == null; // true
verificare i dettagli interni di questo processo nel The Abstract Relational Comparison Algorithm.
articoli consigliati:
OK. ">", "<" valuti null come 0. "==" no. Grazie. – Eonil
Un'altra cosa interessante è che a> = b non è valutato come ((a> b) || (a == b)) ma come! (a = 0 non è uguale a> o ==. – bschandramohan
Quando null viene utilizzato in una serie numerica, passa a 0, ciò spiega i casi> e> =.
== è più sottile. Informalmente, null non è uguale a zero, quindi ha un senso.
[This] (http://bclary.com/2004/11/07/#a-11.8) è un collegamento molto molto utile per comprendere i passi compiuti nell'utilizzo di questi operatori. Ancora non spiega la logica folle, ma meh ... – Stephen
Gli operatori di confronto relativi implica un contesto numerico, quindi in quei casi (>
, >=
) il null
viene convertito in un numero (zero).
Nel caso ==
, tuttavia, entrambi i valori sono considerati valori booleani e Javascript non ritiene che null
debba essere uguale a qualsiasi altro valore "falsy". È piuttosto strano. L'algoritmo di uguaglianza per ==
ha un sacco di casi speciali e null
è uno di quelli. È solo ==
per se stesso e undefined
.
Interessante! Sembra che Javascript abbia bisogno di un paio di nuovi operatori di identità come >==
e <==
. Anche se non sono sicuro che avrebbe molto senso, date le implicazioni numeriche di >
e <
.
Questo dà il risultato atteso ...
(null > 0 || null === 0);
'nullo <= 0 '== true pure. – Oded
Quale interprete/browser? –
Wow ............ – Eonil