在 JavaScript 中有用的块范围的真实示例是什么?
What is a real-world example of block scope being useful in JavaScript?
let
和 const
在 JavaScript 中引入了块级作用域,现在我明白了其中的区别。但我还没有找到一个令人信服的现实世界的例子,其中 let
比 var
有优势。
块作用域在实践中提供了什么(通过示例说明)?
1) 它与其他语言保持一致:
在 var
中,通常不清楚变量的定义位置以及我们可以访问它的位置而不是:
if(false) {
var a = 1;
} else {
a = 2; // wtf
}
alert(a);
let
很明显:
let a;
if(false) { a = 1; } else { a = 2; }
2) 它允许在 for 循环中有用的闭包:
for(var i = 0, i < 10; i++)
setTimeout(() => console.log(i), 100);
// 10 10 10 10 ...
for(let i = 0, i < 10; i++)
setTimeout(() => console.log(i), 100);
// 0 1 2 3 4 5 6 ...
let
和 const
在 JavaScript 中引入了块级作用域,现在我明白了其中的区别。但我还没有找到一个令人信服的现实世界的例子,其中 let
比 var
有优势。
块作用域在实践中提供了什么(通过示例说明)?
1) 它与其他语言保持一致:
在 var
中,通常不清楚变量的定义位置以及我们可以访问它的位置而不是:
if(false) {
var a = 1;
} else {
a = 2; // wtf
}
alert(a);
let
很明显:
let a;
if(false) { a = 1; } else { a = 2; }
2) 它允许在 for 循环中有用的闭包:
for(var i = 0, i < 10; i++)
setTimeout(() => console.log(i), 100);
// 10 10 10 10 ...
for(let i = 0, i < 10; i++)
setTimeout(() => console.log(i), 100);
// 0 1 2 3 4 5 6 ...