相关疑难解决方法(0)

使用"let"和"var"在JavaScript中声明变量有什么区别?

ECMAScript 6介绍了该let声明.我听说它被描述为"本地"变量,但我仍然不太确定它与var关键字的行为有何不同.

有什么区别?何时应该let使用var

javascript scope var let ecmascript-6

4199
推荐指数
28
解决办法
111万
查看次数

使用for循环解释`let`和块作用域

据我所知,这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的语法糖吗?这是怎么回事?

我理解上面和之间的差异 …

javascript ecmascript-6

31
推荐指数
3
解决办法
3821
查看次数

标签 统计

ecmascript-6 ×2

javascript ×2

let ×1

scope ×1

var ×1