时间死区,让for-loop

var*_*kor 7 javascript firefox google-chrome ecmascript-6

我们可以let在for循环中使用语句,具有多个变量赋值,例如:

for (let x = 0, y = 0; x < 10; ++ x);
Run Code Online (Sandbox Code Playgroud)

但是,如果我们从另一个变量中引用一个变量,我们就会开始在实现中出现差异; 以下结果导致Chrome中的工作代码,但Firefox中的ReferenceError:

for (let x = 0, y = x; x < 10; ++ x);
Run Code Online (Sandbox Code Playgroud)

在整个表达式被解析之后,Firefox似乎不会分配x到yunder,而Chrome会立即执行.请注意,以下内容适用于两种浏览器(for块外的相同语句):

let x = 0, y = x; // x = 0, y = 0
Run Code Online (Sandbox Code Playgroud)

似乎Firefox的实现是不正确的(特别是考虑到for块外的情况),但ES6规范对此有何看法?这是否需要(或已经)报告过?

log*_*yth 1

Firefoxlet是一个古老的非标准实现。最好的地方是http://kangax.github.io/compat-table/es6/。假设您使用的是 Firefox Stable (43),并不是说它当前列出的对 ES6 的支持为零let。