据我所知,这let可以防止重复的声明,这很好.
let x;
let x; // error!
Run Code Online (Sandbox Code Playgroud)
声明的变量let也可以用在可以预期的闭包中
let i = 100;
setTimeout(function () { console.log(i) }, i); // '100' after 100 ms
Run Code Online (Sandbox Code Playgroud)
我有点难以理解的是如何let应用于循环.这似乎是for循环特有的.考虑一下经典问题:
// prints '10' 10 times
for (var i = 0; i < 10; i++) { process.nextTick(_ => console.log(i)) }
// prints '0' through '9'
for (let i = 0; i < 10; i++) { process.nextTick(_ => console.log(i)) }
Run Code Online (Sandbox Code Playgroud)
为什么let在这种情况下使用起作用?在我的想象中,即使只有一个块是可见的,for实际上为每个迭代创建一个单独的块,并且let声明在该块内完成......但是只有一个let声明来初始化该值.这只是ES6的语法糖吗?这是怎么回事?
我理解上面和之间的差异 …