Warum unterscheidet sich der „let“-Lookahead zwischen for-in- und for-of-Schleifen in ECMAScript?JavaScript

Javascript-Forum
Guest
 Warum unterscheidet sich der „let“-Lookahead zwischen for-in- und for-of-Schleifen in ECMAScript?

Post by Guest »

Die ForInOfStatement-Produktion in der Spezifikation für ECMAScript ist für die Fälle, über die ich verwirrt bin, wie folgt definiert:

Code: Select all

 for ( [lookahead ≠ let [] LeftHandSideExpression in Expression ) Statement
for ( [lookahead ∉ { let, async of }] LeftHandSideExpression of AssignmentExpression )
Ignorieren Sie den „async of“-Unterschied, der bereits gut dokumentiert ist.
Warum gibt es einen Unterschied zwischen let und let? [ negativer Lookahead?
Das for-in hat let [ als negativen Lookahead, ich gehe davon aus, dass diese Syntax nicht durch die obige Zeile abgedeckt wird:< /p>

Code: Select all

for (let[a] in [1]) ;
Wenn dies durch die obige Zeile abgedeckt wäre, würde es bedeuten: „Weisen Sie den Schlüssel von [1] zu (let)[a]“.
Stattdessen wird diese Syntax durch eine andere Zeile abgedeckt, die sie zu einer let-Deklaration mit einem Array-Zerstörungsmuster macht.
Was Sinn macht.Dies wird durch die obige Zeile im For-In abgedeckt und ist gültig Fall:

Code: Select all

for (let.a in [1]) ;
D.h. Weisen Sie let.a den Schlüssel von [1] zu.
Dies ist jedoch für den for-of-Fall nicht zulässig:

Code: Select all

for (let.b of [1]) ;
Firefox sagt:

Uncaught SyntaxError: an expression X in 'for (X of Y)' darf nicht beginnen mit 'let'

Node und Chrome sagen:

SyntaxError: The left -Hand-Seite einer for-of-Schleife darf nicht mit beginnen 'let'.

Es muss etwas mehr Eindeutigkeit für die for-of-Schleife geben, die die Einschränkungen für diese Schleife erweitert. Was ist diese Eindeutigkeit?< /P>

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post