Dlaczego jest 0 == ""
prawdziwe w JavaScript? Znalazłem similar post here, ale dlaczego numer 0 jest podobny do pustego ciągu? Oczywiście, 0 === ""
jest fałszywe.Dlaczego 0 == "" prawda w JavaScript
Odpowiedz
0 == ''
Lewy operand jest typu Numer.
Prawy operand jest typu String.
W tym przypadku prawo operand jest zmuszany do Numer typu:
0 == Number('')
co skutkuje
0 == 0
Od Streszczenie Równości Algorytm Porównanie (numer 4) :
Jeśli Typ (x) jest liczbą i typem (y) jest łańcuchem, zwróć wynik porównania: x == ToNumber (y).
Źródło: http://es5.github.com/#x11.9.3
Dzięki, po prostu spodziewałem się tego na odwrót, 0 skonwertowałem na ciąg znaków, a następnie na fałsz. –
Tak, z drugiej strony oznacza to, że mówienie obydwu jest fałszywe - tak jak w przypadku innych odpowiedzi, nie jest całkiem poprawne. Ponieważ - jak dobrze pokazałeś - powodem jest to, że "" => 0. Dzięki za wsparcie! –
@Horst - tak, zgadza się. Oba _jest_ falsy, jak widać, jeśli użyjesz ich sam w 'if (0)' lub 'if (" ")', ale w przypadku '==' porównania, to nie jest to, co się dzieje. (Nie jestem pewna, dlaczego Šime zostawił komentarz powyżej, mówiąc "Ponieważ obie wartości są fałszywe".) – nnnnnn
- 1. Wyjaśnij, dlaczego "+ [] == 0" wynik "prawda" w JavaScript?
- 2. var_dump (0 == "wszystkie"); // DLACZEGO PRAWDA
- 3. Dlaczego {} + [] zwraca 0 w JavaScript?
- 4. Dlaczego jest dziesiętny ("0")> 9999.0 Prawda w python?
- 5. Dlaczego PRAWDA == "PRAWDA" ma wartość PRAWDA w R?
- 6. {} - 0 VS ({} - 0) w JavaScript
- 7. Dlaczego $ false -eq "" prawda?
- 8. Dlaczego (prawda) jest zła praktyka?
- 9. Dlaczego -0 istnieje?
- 10. python pandas/numpy Prawda/False to 1/0 mapowanie
- 11. JavaScript 0 na początku numeru
- 12. Dlaczego systemLayoutSizeFittingSize zwraca (0, 0) dla UITableViewCell?
- 13. CurrentDb.RecordsAffected zwraca 0. Dlaczego?
- 14. JavaScript PRAWDA nie jest zdefiniowane ani w cudzysłowie
- 15. Dlaczego muszę wpisać "\\\ 0", aby utworzyć ciąg "\ 0" w zsh?
- 16. JavaScript nie większy niż 0
- 17. Dlaczego prawda jest większa niż 3 w PHP
- 18. Javascript "" .charCodeAt (0) utknął w 55357?
- 19. JavaScript składni (0, fn) (args)
- 20. Dlaczego 2 == [2] w JavaScript?
- 21. Dlaczego zestawienie sockaddr_in to 0
- 22. Dlaczego przesunięcie kompilatora w lewo o 0?
- 23. Dlaczego zakres od 0-180 ° w opencv
- 24. Dlaczego SELECT 0, ... zamiast SELECT
- 25. javascript: void (0) i target = "_ blank" zachowanie
- 26. Dlaczego chcesz wrócić (0 * ap ++)?
- 27. Dlaczego Calendar.get (Calendar.MONTH) zwraca 0?
- 28. Dlaczego ten ciąg echo 0?
- 29. Dlaczego powierzchnia powraca jako 0?
- 30. Dlaczego 0 === -0 jest prawdziwe, ale 1/0 === 1/-0 jest fałszem?
To znaczy, 0 jest "lanego" fałszywie "" jest odlewane w fałszywe i czek jest fałszywy == false => true –
dla PHP, zobacz http: // php. net/manual/pl/types.comparisons.php – apscience
Wierzę, że to dlatego, że JavaScript automagicznie wymusza łańcuchy i liczby w niektórych kontekstach, operator == jest jednym z tych kontekstów, a "" wymusza na 0. – millimoose