Warum funktioniert
aus Sicht des Sprachdesigns? %Vor% wirft eine TypeError
Ausnahme während
nicht?
Ich habe die folgenden Abschnitte in der ECMAScript-Spezifikation gelesen:
Kann jemand die Gründe für eine solche Inkonsistenz erklären?
Warum kann der Ausdruck 'k' in 42
in if (...)
nur auf false
ausgewertet werden?
Lesen Sie den Abschnitt im Abschnitt erneut.
%Vor%42 ist kein Objekt, es ist eine Zahl
%Vor%for-in-Anweisung benötigt kein Objekt, sondern konvertiert es tatsächlich in ein Objekt
%Vor%Ich glaube nicht, dass dies ein Grund für dieses Verhalten ist, es ist wahrscheinlich ein Konstruktionsfehler (Inkonsistenz)
Ich glaube, der Schlüssel hier ist der Unterschied zwischen "operator" ( in
) und "statement" ( for-in
). Wenn Sie den Standard überprüfen, sehen Sie, dass die Letzteren nur Fehler ausgeben, wenn sie falsch geschrieben werden. Der Fall with
, der einen SyntaxError (!) Im strikten Modus auslöst, ist ziemlich aussagekräftig.
Offenbar können Sie nicht erraten, ob for (var x in someExpr)
falsch geschrieben wurde oder nicht, es sei denn, Sie bewerten someExpr
zuerst.
Tags und Links javascript ecmascript-5