首页 > 解决方案 > 是否让循环内外使用相同

问题描述

当我阅读这篇文章https://stackoverflow.com/a/111111/6359753中的示例 6 时,我的脑海中突然出现了这个问题

会不会有区别

// Example 1
let i;
var arr = [1,2,3]
for (i=0; i<arr.length; i++){
 // do stuff
}

// Example 2
var arr = [1,2,3]
for (let i=0; i<arr.length; i++){
 // do stuff
}

如果它们相同,为什么它们相同?

换句话说,我不太了解let's 的范围。如果在循环之外声明,它们是否在循环之外?示例 2 的 let 清楚地限定在 for 循环内,但示例 1 我不太确定。

标签: javascriptvarlet

解决方案


如果它在for循环中声明,则仅在循环体中可见。循环外i不可见。

var arr = [1,2,3];

for (let i=0; i<arr.length; i++) {
 
}

console.log(i);

如果在for循环外声明,则变量的作用域是最近的包围块{}

let i;
var arr = [1,2,3];

for (i = 0; i < arr.length; i++) {

}

console.log(i);


推荐阅读