Zmienna nie może jednocześnie być jednocześnie null
i undefined
. Jednak bezpośrednią odpowiedź na Twoje pytanie brzmi:
if (variable != null)
Jeden =
, nie dwa.
Istnieją dwa specjalne klauzule w „abstrakcyjnego porównania równość algorytmu” w ciemno JavaScript poświęconej przypadku jednego argumentu będącego null
a drugi będąc undefined
, a wynik jest true
dla ==
i false
dla !=
. Zatem jeśli wartość zmiennej to undefined
, to nie jest ona != null
, a jeśli nie jest zerowa, to oczywiście nie jest != null
.
Teraz sprawa identyfikator nie jest zdefiniowany w ogóle, albo jako var
lub let
, jako parametr funkcji lub jako własność kontekście globalnym jest inna. Odniesienie do takiego identyfikatora jest traktowane jako błąd w czasie wykonywania. Możesz próbować odniesienia i złapać błąd:
var isDefined = false;
try {
(variable);
isDefined = true;
}
catch (x) {}
Osobiście uważam, że jednak wątpliwa praktyka. Dla globalnych symboli, które mogą lub mogą być tam na podstawie obecności lub braku innej biblioteki, lub jakiegoś podobnej sytuacji, można przetestować na window
nieruchomości (w przeglądarce obsługę skryptów JavaScript):
var isJqueryAvailable = window.jQuery != null;
lub
var isJqueryAvailable = "jQuery" in window;
To nie jest dokładnie spowalnia swój kod, jeśli o to się martwisz. – Blazemonger
Użyj funkcji: 'function isNullOrUndefined (variable) {return variable === null || zmienna === niezdefiniowana; } '. – VisioN
@VisioN Jeśli przekażesz niezdefiniowaną zmienną do funkcji jako argument, otrzymasz błąd. – dqhendricks