for和of循环定义中let和const的用法

D G*_*D G 3 javascript ecmascript-6

我对es6 letconst一般情况之间的差异非常熟悉.我不太确定的是,在for..of循环的定义范围内.

我知道循环签名的"老派"不会接受const ie

for (let i = 0; i < 100; i++) ... // works in chrome

for (const i = 0; i < 100; i++) ... // does not work in chrome (reassignment error)
Run Code Online (Sandbox Code Playgroud)

但是,通过for..of循环,它似乎没有什么区别

const someArray = ['hello', 'hey'];

for (let elem of someArray) ... // works
for (const elem of someArray) ... // also works?
Run Code Online (Sandbox Code Playgroud)

那么这里发生了什么?

为什么const允许for..of但不是旧学校的循环?

循环中的最终结果差异是什么?(除了可能elem在循环内重新分配,我不希望很多人做的事情)

Nik*_*wal 5

只重新分配一个变量,因此错误

for (const i = 0; i < 100; i++)
Run Code Online (Sandbox Code Playgroud)

为每个循环创建了一个单独的变量,因此工作正常

for (const elem of someArray)
Run Code Online (Sandbox Code Playgroud)