不久前,我读了一些关于在 JavaScript 中使用 let 和 var 的文章,他们说使用“var”关键字声明的变量(即使在 for 循环中)只能在它的函数内工作,那么为什么它可能要在一个函数中创建多个 for 循环,每个循环如下所示: for (var i = 0; i < array.length; i++);
JavaScript 对于“重新声明” i 变量没有问题吗?谢谢:)
最佳答案
JS 对于 var
有一个特殊情况,因为它允许提升,这意味着允许对相同变量进行多次声明,并将它们移动到封闭的函数作用域。然而它们仍然是相同的变量。考虑以下代码:
function foo(){
for(var i=0; i<3; i++){
console.log("x");
}
for(var i;i<6;i++){
console.log("y");
}
}
foo()
请注意,第二个循环中没有对 i 进行初始化,但它将正常执行并生成 3 x
和 3 y
。这曾经是旧浏览器的问题,但新浏览器只是允许它,并且没有给出错误。
关于JavaScript let 和 var 用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47401772/