Nauczyłem się zawsze sprawdzać zmienne w języku JavaScript:
function x(variable){
if(typeof variable !== "undefined" && variable !== null)...
}
Nowy kolega powiedział teraz, że jest łatwiejszy i lepiej po to zrobić:
function x(variable){
if(variable != null)
}
Czy to naprawdę to samo? Jak to działa?
Dzięki
3 odpowiedzi
NULL i niezdefiniowane są dwa Prymitywne datatypy w JavaScript.
Przykładem z Mozilla MDN:
var x;
if (x === undefined) {
// these statements execute
}
else {
// these statements do not execute
}
Należy tutaj użyć ścisłego operatora równości, a nie standardowy operator równości, ponieważ x == undefined
sprawdza, czy x jest null, podczas gdy ścisła równość nie. null
nie jest równoważny undefined
.
function x(variable){
if(variable != null) // variable would be both null and undefined for comparison
}
Powyższy przykład myślę, że działa, ponieważ nie używasz ścisłych porównania. Krótko mówiąc, obie przykłady nie są takie same, ale mogą podać ten sam wynik. Wszystko zależy od tego, czy twój wymóg logiczny jest ścisłym porównaniem, czy nie.
function x(variable){
if(typeof variable !== "undefined" && variable !== null)...
}
Powyżej sprawdzi, czy zmienna jest istnieje, czy jest zadeklarowany, a jeśli tak, to nie jest null. Jest to dobre podejście, jeśli nie masz pewności co do zmiennej deklaracji.
function x(variable){
if(variable != null)
}
Powyżej sprawdzi, czy zmienna nie jest null. Jest to dobre tylko wtedy, gdy jesteś pewien, że jest zadeklarowany na początku.
Dodatkowy
return value === null || value === undefined;
Powyżej jest dla null lub niezdefiniowany.
Mam nadzieję że to pomoże.
Twoje zdrowie!
Jedyną różnicą jest to, że pierwsza może być bezpiecznie używana do sprawdzania zmiennej globalnej
> foo // -> ReferenceError
> foo != null // -> ReferenceError
> typeof foo !== 'undefined' && foo !== null // -> false
Ale w twoim przykładzie nie ma znaczenia, ponieważ pusty argument funkcji jest zawsze undefined