Ich bin auf folgenden Code gestoßen:
function test(data) {
if (data != null && data !== undefined) {
// some code here
}
}
Ich bin etwas neu in JavaScript, aber aufgrund anderer Fragen, die ich hier gelesen habe, habe ich den Eindruck, dass dieser Code nicht viel Sinn macht.
Sie erhalten eine Fehlermeldung, wenn Sie in einem anderen Kontext als auf eine undefinierte Variable zugreifentypeof
.
Update: Die (Zitat der) Antwort oben kann irreführend sein. Es sollte "eine nicht deklarierte Variable" anstelle von "eine nicht definierte Variable" stehen .
Wie ich herausgefunden habe, werden in den Antworten von Ryan ♦ , Maerics und Nwellnhof die Variablen für die Argumente immer deklariert, selbst wenn für eine Funktion keine Argumente angegeben werden. Diese Tatsache beweist auch den ersten Punkt in der Liste unten als falsch.
Nach meinem Verständnis können die folgenden Szenarien auftreten:
Die Funktion wurde ohne Argumente aufgerufen, wodurchdata
eine undefinierte Variable erstellt und ein Fehler ausgelöst wurdedata != null
.Die Funktion wurde speziell mit
null
(oderundefined
) als Argument aufgerufen. In diesem Falldata != null
schützt sie bereits den inneren Code und macht ihn&& data !== undefined
unbrauchbar.Die Funktion wurde mit einem Nicht-Null-Argument aufgerufen. In diesem Fall werden sowohl
data != null
und als auch trivial übergebendata !== undefined
.
F: Ist mein Verständnis richtig?
Ich habe Folgendes in der Firefox-Konsole versucht:
--
[15:31:31.057] false != null
[15:31:31.061] true
--
[15:31:37.985] false !== undefined
[15:31:37.989] true
--
[15:32:59.934] null != null
[15:32:59.937] false
--
[15:33:05.221] undefined != null
[15:33:05.225] false
--
[15:35:12.231] "" != null
[15:35:12.235] true
--
[15:35:19.214] "" !== undefined
[15:35:19.218] true
Ich kann keinen Fall herausfinden , wo die data !== undefined
nach data != null
irgendwelcher sein könnte.
if(data)
würde bedeuten, dass er nicht übergeben kann false
oder 0
als Werte für data
.
if(typeof someUndefVar == whatever) -- works
und if(someUnderVar) -- error
.
data !== null && data !== undefined
, was äquivalent zu data != null
was äquivalent zu ist data != undefined
. Die erstere Form wird tendenziell bevorzugt, da sie die Bedingungen expliziter beschreibt, während es leicht zu übersehen ist, dass beide null
und undefined
mit den beiden späteren Bedingungen überprüft werden.
undefined
IMO ein Codegeruch. Es ist kein geschütztes Schlüsselwort wie null
, es ist eine Variable, die zufällig undefiniert ist. Dies ist völlig gültig und wird Ihren Code brechen:undefined = 1
if (data)
. Es ist eine mnemonische Javascript-Methode, um zu überprüfen, ob diedata
Variable true ergibt.undefined
,null
, False, 0, leere Zeichenfolge, leere Array und (?) Objekt ohne Eigenschaften das Ergebnis falsch, der Rest ist wahr.