Wiem, że poniżej są dwa sposoby sprawdzania, czy zmienna nie jest w JavaScript null
, ale jestem zdezorientowany, co jest najlepszą praktyką.
Czy powinnam:
if (myVar) {...}
lub
if (myVar !== null) {...}
javascript
comparison
null-check
nickb
źródło
źródło
Odpowiedzi:
Nie są równoważne. Pierwszy wykona blok następujący po
if
instrukcji ifmyVar
jest prawdomówny (tzn. Ocenitrue
warunkowo), a drugi wykona blok, jeślimyVar
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
źródło
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
lubNaN
lub cokolwiek innego ..źródło
("")
i niezdefiniowanego. Zobacz moje skrzypce jako odniesienie: jsfiddle.net/b0tm7yafPrzeczytaj 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 .:
Wspomina także o tym, co uważa się za „falsey”, czego możesz nie zdawać sobie sprawy.
źródło
if(myVar) { code }
NIE zostanie wykonany tylko wtedy, gdymyVar
jest równy:false, 0, "", null, undefined, NaN
lub nigdy nie zdefiniowałeś zmiennejmyVar
(wtedy dodatkowo kod zatrzyma wykonanie i zgłasza wyjątek).if(myVar !== null) {code}
NIE zostanie wykonany tylko wtedy, gdymyVar
jest równynull
lub nigdy go nie zdefiniowałeś (zgłasza wyjątek).Tutaj masz wszystko ( src )
Jeśli
== (jego negacja ! = )
=== (jego negacja ! == )
źródło
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:
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.
źródło
null
łańcuchami.value = JSON.parse(value)
a następnie skorzystać z prostego i właściwegovalue != null
testujeśli
myVar
jest zerowy, to jeśli blok nie wykona się w inny sposób, wykona się.if (myVar != null) {...}
źródło
'null'
, ale wartość specjalnanull
.Czasami, jeśli nie został nawet zdefiniowany, lepiej się przygotować. Do tego użyłem typeof
źródło
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.
źródło
=
jest kluczowa i ma ogromny wpływ na pytanie. Być może nie jesteś świadomy istnienia!==
i===
operatorów w JavaScript?