是否让循环内外使用相同
Is let the same used inside and outside a loop
当我阅读本文中的示例 6 时,这个问题突然出现在我的脑海中 post
会有区别吗
// 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
的范围。如果在循环外声明,它们是否在循环外?示例 2 的 let 显然在 for 循环内,但示例 1 我不太确定。
如果在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);
不,在范围方面它们是不一样的。
在第一个例子中,变量i
是全局变量,可以在整个程序中访问。但在第二个示例中,i
的范围仅限于 for
循环,因此无法从 for
循环外部访问 i
。
Here是一篇解释var,let,const区别的文章
我很好地概述了 JS 如何在幕后处理变量。
它解释了变量提升、作用域(这是你的问题)以及在使用 let 和 const 时如何避免一些陷阱。
当我阅读本文中的示例 6 时,这个问题突然出现在我的脑海中 post
会有区别吗// 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
的范围。如果在循环外声明,它们是否在循环外?示例 2 的 let 显然在 for 循环内,但示例 1 我不太确定。
如果在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);
不,在范围方面它们是不一样的。
在第一个例子中,变量i
是全局变量,可以在整个程序中访问。但在第二个示例中,i
的范围仅限于 for
循环,因此无法从 for
循环外部访问 i
。
Here是一篇解释var,let,const区别的文章
我很好地概述了 JS 如何在幕后处理变量。
它解释了变量提升、作用域(这是你的问题)以及在使用 let 和 const 时如何避免一些陷阱。