TypeError:如果运行ES6代码,则在Firebug控制台中重新声明let错误

Nes*_*esh 9 javascript ecmascript-harmony ecmascript-6

我正在学习ES6,所以请耐心等待.

以下是运行正常的代码,如果我单击" 运行"按钮一次,但在第二次命中时它会开始显示TypeError: redeclaration of let myArr错误.

让我知道这种奇怪的(可能不是)行为.

let myArr = [34,45,67,2,67,1,5,90];
let evenArr = [];
let oddArr = [];
myArr.forEach(x => {
    if (x % 2 === 0) {
        evenArr.push(x);
    } else {
        oddArr.push(x);
    }
});

console.log(evenArr);
console.log(oddArr);
Run Code Online (Sandbox Code Playgroud)

错误 -

重新释放错误

Thi*_*ter 10

ES6 不允许您这样做(在同一范围内重新声明块范围的变量):

let foo;
let foo;
Run Code Online (Sandbox Code Playgroud)

并且由于控制台保持状态直到你重新加载页面(毕竟你在页面的上下文中),第一次运行它时你定义myArr所以你不能在第二次运行时重新定义它.

  • 我也有同样的问题。我阅读了您的答案,并对`let`进行了一些研究,但是我仍然很难理解它。根据您所说的,他通过用`let`定义变量,然后将其更改为`var`来得到错误。但是,就我而言,我是从`var`开始的,尽管我没有使用'let`,但仍然遇到相同的错误。 (2认同)