为什么要在规范中单独列出?

Jam*_*rpe 3 javascript specifications ecmascript-6

该语句的部分规范for-of包含以下行:

如果ForDeclaration的BoundNames包含" let " ,则为语法错误.

在我看来,这意味着你不能写:

for (var let of someObject) { /* ... */ }
Run Code Online (Sandbox Code Playgroud)

但是您也会收到其他保留字的语法错误,例如:

for (var function of someObject) { /* ... */ }
Run Code Online (Sandbox Code Playgroud)

要么

for (let for of someObject) { /* ... */ }
Run Code Online (Sandbox Code Playgroud)

要清楚,在这里用于声明变量let本身是完全有效的.这有什么特别意味着它在规范中被单独列出,或者我对这一行的解释不正确?let

Fel*_*ing 6

那是因为let官方不是关键字:

严格的模式码,let并且static被视为通过静态语义限制保留关键字(见12.1.1,13.3.1.1,13.7.5.1,和14.5.1),而不是词法文法.

我不能告诉你为什么他们决定这样做.