Perché 0 == ""
è true in JavaScript? Ho trovato un similar post here, ma perché un numero 0 è simile a una stringa vuota? Naturalmente, 0 === ""
è falso.Perché 0 == "" vero in JavaScript
risposta
0 == ''
L'operando di sinistra è del tipo Numero.
L'operando destro è del tipo String.
In questo caso, l'operando di destra è costretto al Numero tipo:
0 == Number('')
che si traduce in
0 == 0
Dal astratta uguaglianza Confronto Algoritmo (numero 4) :
Se Type (x) è Number e Type (y) è String, restituisce il risultato di il confronto x == ToNumber (y).
Grazie, mi aspettavo solo il contrario, lo 0 convertito in stringa e poi falso. –
Sì, d'altra parte questo significa che entrambi sono falsi - come nelle altre risposte, non è del tutto corretto. Perché - come hai dimostrato molto bene - il motivo è "" => 0. Grazie per il tuo supporto! –
@Horst - sì, è giusto. Entrambi sono falsi, come puoi vedere se li usi da soli in 'if (0)' o 'if (" ")', ma nel caso di un confronto '==' questo non è ciò che sta accadendo. (Non sono sicuro del motivo per cui Šime ha lasciato un commento sopra dicendo "Perché entrambi i valori sono falsi"). – nnnnnn
- 1. Perché -0 === 0 è vero?
- 2. Perché "" == [null] è vero in JavaScript?
- 3. Perché "ciao"> 0 restituisce VERO?
- 4. Perché {} + [] restituisce 0 in Javascript?
- 5. Perché 0 === -0 è vero, ma 1/0 === 1/-0 è falso?
- 6. Perché 0 è vero ma falso è 1 nella shell?
- 7. Spiega perché '+ [] == 0' output 'true' in Javascript?
- 8. Perché Perl pensa che `1 e 0` sia vero?
- 9. Perché l'avviso (!! "0") e l'avviso (falso == "0") sono entrambi veri in JavaScript
- 10. Perché è così !! 0 è falso e {} + [] è 0 ma !! ({} + []) è vero?
- 11. javascript interruttore (vero)
- 12. Perché javascript: void (0) è considerato dannoso?
- 13. Perché "non (Vero) in [Falso, Vero]" restituisce False?
- 14. Perché 0 in meno di Number.MIN_VALUE in JavaScript?
- 15. Perché ("00e0" == "00e1") è vero?
- 16. Perché 0 == [], ma 0 == false e! [] == false?
- 17. Perché Number ([]) === 0 e Number ({}) === NaN in Javascript?
- 18. Come convertire "0" e "1" in falso e vero
- 19. Se entrambi [0] == 0 e 0 == [[0]] sono veri del perché è [0] == [[0]] falso?
- 20. Perché -0 esiste?
- 21. Perché restituire vero o falso dalle funzioni?
- 22. comparazione stringa php a 0 intero restituisce vero?
- 23. In csh, perché 4 - 3 + 1 == 0?
- 24. Perché questo confronto è sempre vero?
- 25. Perché $ '\ 0' o $ '\ x0' è una stringa vuota? Dovrebbe essere il carattere null, non è vero?
- 26. # o javascript: void (0)?
- 27. Perché messa in vendita il costruttore vero e proprio di una classe in javascript importante
- 28. Javascript restituisce -0
- 29. Qualsiasi motivo per usare! 0 invece di vero?
- 30. object.count restituisce 0. Ma object.any? ritorna vero Cosa sta succedendo?
Intendi 0 è "fuso" nella falsa "" è realizzata mediante fusione in falso e l'assegno è falso == false => true –
Per PHP, vedere http: // php. net/manual/it/types.comparisons.php – apscience
Credo che sia perché JavaScript costruisce automagicamente stringhe e numeri in alcuni contesti, l'operatore == è uno di questi contesti e "" costringe a 0. – millimoose