我有一些与此类似的JavaScript代码:

for (i = 0; i < numTimes; i++) {
   DoStuff();
}


function DoStuff() {

for (i = 0; i < 100; i++) {

  console.log(i);

}

}


我发现第二次调用DoStuff()时,循环中i的值从1开始。我认为这是由于变量作用域在JS中起作用的方式引起的。除了在DoStuff()函数中更改变量名称之外,解决此问题的最干净方法是什么,有人可以解释此行为吗?

编辑:感谢您的答复。看来JS具有“词汇范围”而不是“块范围”。这就是我在这里看到的吗?有人可以用新手解释什么词汇范围吗?

最佳答案

    for (var i = 0; i < numTimes; i++) {
   DoStuff();
}


function DoStuff() {

for (var i = 0; i < 100; i++) {

  console.log(i);

}

}

关于javascript - JavaScript中变量的范围,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6600519/

10-11 06:13