Nicht wirklich. In Ihrem zweiten Beispiel wird eine %code% Ausnahme ausgelöst, wenn %code% dies nicht tut wurde erklärt.
Andererseits können Sie mit dem % co_de sicher nach undefinierten nicht deklarierten Variablen suchen % operator.
Kann dieser Code
? %Vor%in diesem Code sicher umgestaltet werden?
%Vor%Ist das genau dasselbe? (Und wenn nicht, wie ist es anders?)
Kann dieser Code
? %Vor%in diesem Code sicher umgestaltet werden?
%Vor%Ist das genau dasselbe? (Und wenn nicht, wie ist es anders?)
Variablen können tatsächlich den Wert ReferenceError
enthalten, was der Standardwert ist, wenn eine Variable nie zugewiesen wurde. So funktioniert foo
, wenn Ihre Variable mit typeof
deklariert wird oder wenn Sie einen Wert durch Zuweisung erhalten. Wenn dies nicht der Fall ist, erhalten Sie einen ReferenceError. Daher sind die beiden Snippets nicht äquivalent.
Wenn Sie sicher sein können, dass %code% deklariert ist, ist dies sicher und einfacher zu verstehen als Ihr ursprüngliches zweites Snippet, vorausgesetzt, dass nirgendwo im Code etwas wie %code% existiert:
%Vor%Nicht wirklich. In Ihrem zweiten Beispiel wird eine %code% Ausnahme ausgelöst, wenn %code% dies nicht tut wurde erklärt.
Andererseits können Sie mit dem % co_de sicher nach undefinierten nicht deklarierten Variablen suchen % operator.
Ein einfaches Experiment beantwortet diese Frage:
%Vor%Das obige Beispiel führt in vielen Browsern zu einem JavaScript-Fehler: %code% . Dies liegt daran, dass wir eine Variable verwendet haben, die zuvor nicht als Argument oder %code% im aktuellen Bereich deklariert wurde.
Der %code% -Operator dagegen enthält eine explizite Akkommodation für Variablen, die nicht definiert wurden - er gibt %code% zurück, also:
%Vor%funktioniert wie erwartet.
Die Antwort ist also "nein" - sie sind nicht dasselbe - obwohl sie sich in einigen Javascript-Umgebungen genauso verhalten, in anderen -Umgebungen Das zweite Formular erzeugt Fehler, wenn %code% nicht definiert ist.
Ein einfaches Experiment beantwortet diese Frage:
%Vor% Das obige Beispiel führt in vielen Browsern zu einem JavaScript-Fehler: "ReferenceError: Can't find variable: foo"
. Dies liegt daran, dass wir eine Variable verwendet haben, die zuvor nicht als Argument oder var
im aktuellen Bereich deklariert wurde.
Der typeof
-Operator dagegen enthält eine explizite Akkommodation für Variablen, die nicht definiert wurden - er gibt 'undefined'
zurück, also:
funktioniert wie erwartet.
Die Antwort ist also "nein" - sie sind nicht dasselbe - obwohl sie sich in einigen Javascript-Umgebungen genauso verhalten, in anderen -Umgebungen Das zweite Formular erzeugt Fehler, wenn foo
nicht definiert ist.
Variablen können tatsächlich den Wert undefined
enthalten, was der Standardwert ist, wenn eine Variable nie zugewiesen wurde. So funktioniert foo != null
, wenn Ihre Variable mit var
deklariert wird oder wenn Sie einen Wert durch Zuweisung erhalten. Wenn dies nicht der Fall ist, erhalten Sie einen ReferenceError. Daher sind die beiden Snippets nicht äquivalent.
Wenn Sie sicher sein können, dass foo
deklariert ist, ist dies sicher und einfacher zu verstehen als Ihr ursprüngliches zweites Snippet, vorausgesetzt, dass nirgendwo im Code etwas wie undefined = 42
existiert:
Tags und Links javascript