Odpowiedzi:
Nie są równoważne. Pierwszy wykona blok następujący po if
instrukcji if myVar
jest prawdomówny (tzn. Ocenitrue
warunkowo), a drugi wykona blok, jeśli myVar
ma dowolną wartość inną niż null
.
Jedyne wartości, które nie są zgodne z prawdą w JavaScript, są następujące (inaczej wartości fałszowania ):
null
undefined
0
""
(pusty ciąg)false
NaN
Oto jak możesz sprawdzić, czy zmienna nie ma wartości NULL:
if (myVar !== null) {...}
blok zostanie wykonany jeśli myVar nie jest null .. zostanie wykonany jeśli myVar jest niezdefiniowana lub fałszywe lub 0
lub NaN
lub cokolwiek innego ..
("")
i niezdefiniowanego. Zobacz moje skrzypce jako odniesienie: jsfiddle.net/b0tm7yaf
Przeczytaj ten post: http://enterprisejquery.com/2010/10/how-good-c-habits-can-encourage-bad-javascript-habits-part-2/
Zawiera kilka fajnych wskazówek dotyczących JavaScript, ale wspomina o tym, że należy sprawdzić wartość null, np .:
if(myvar) { }
Wspomina także o tym, co uważa się za „falsey”, czego możesz nie zdawać sobie sprawy.
if(myVar) { code }
NIE zostanie wykonany tylko wtedy, gdy myVar
jest równy: false, 0, "", null, undefined, NaN
lub nigdy nie zdefiniowałeś zmiennej myVar
(wtedy dodatkowo kod zatrzyma wykonanie i zgłasza wyjątek).if(myVar !== null) {code}
NIE zostanie wykonany tylko wtedy, gdy myVar
jest równy null
lub nigdy go nie zdefiniowałeś (zgłasza wyjątek).Tutaj masz wszystko ( src )
Jeśli
== (jego negacja ! = )
=== (jego negacja ! == )
Jest inny możliwy scenariusz, z którym właśnie się spotkałem.
Zrobiłem wywołanie ajax i odzyskałem dane jako null, w formacie łańcuchowym. Musiałem to sprawdzić w ten sposób:
if(value != 'null'){}
Tak więc null był łańcuchem, który czytał „null”, a nie tak naprawdę był null.
EDYCJA: Należy rozumieć, że nie sprzedaję tego tak, jak należy . Miałem scenariusz, w którym był to jedyny sposób, aby to zrobić. Nie jestem pewien, dlaczego ... może facet, który napisał back-end, przedstawiał dane niepoprawnie, ale niezależnie od tego, to jest prawdziwe życie. To frustrujące, gdy ktoś głosuje w dół, gdy ktoś rozumie, że to nie do końca dobrze, a następnie głosuje w górę przez kogoś, kto w rzeczywistości pomaga.
null
łańcuchami.
value = JSON.parse(value)
a następnie skorzystać z prostego i właściwego value != null
testu
jeśli myVar
jest zerowy, to jeśli blok nie wykona się w inny sposób, wykona się.
if (myVar != null) {...}
'null'
, ale wartość specjalna null
.
Dwie wymienione tutaj instrukcje warunkowe nie są lepsze od siebie. Twoje użycie zależy od sytuacji. Nawiasem mówiąc, masz literówkę w drugim przykładzie. Po wykrzykniku powinien znajdować się tylko jeden znak równości.
Pierwszy przykład określa, czy wartość w myVar ma wartość true, i wykonuje kod w {...}
Drugi przykład ocenia, czy myVar nie jest równy null, a jeśli ten przypadek jest prawdziwy, wykona kod wewnątrz {...}
Proponuję zajrzeć do instrukcji warunkowych, aby uzyskać więcej technik. Po ich zapoznaniu się możesz zdecydować, kiedy ich potrzebujesz.
=
jest kluczowa i ma ogromny wpływ na pytanie. Być może nie jesteś świadomy istnienia !==
i ===
operatorów w JavaScript?