在传统for
循环的初始化表达式中使用let
时,它的作用域为for循环的块。在for循环的初始化表达式中声明的变量始终在词法上始终在体内
细则中指出:
let
和const
声明定义被限定在 运行变量执行上下文的LexicalEnvironment
。
是否意味着的i
声明的一点是(甚至在ES5是(?))词法(语义我知道使用var
将它悬挂)内块包括主体for
循环(因为它天真地看起来好像它是外面它)。
或者这是否意味着这是let
和/或for
循环的新特性,使其具有词法上在循环体内的语义?
要清楚:我知道可见性语义是新的(即let
的块范围与var
的功能范围)。我对定义的词汇位置是否总是被置于循环体内感兴趣。
for(let i = 0; i < 10; i++) {
// the body of the loop....
}
“*这是否意味着的'我申报点'在包含for循环体的块内是词法上的?*“ - 不,你是怎么想的? – Bergi
相关:[let'的语义和block for scoping for循环](https://stackoverflow.com/q/30899612/1048572) – Bergi
不应该使用[tag:language-lawyer]标记该帖子吗? – Dragomok