【发布时间】:2017-09-08 05:15:31
【问题描述】:
我在 Javascript 中有类似于以下代码的内容:
func1() {
for(i = 2; i < 5; i ++) {
console.log(i);
func2(i);
}
}
func2(x) {
for(i = 100; i < 200; i ++) {
do something
}
}
显然,我的这个程序的输出是一个带有 2 的单行,尽管如果我将其中一个 for 循环的索引名称从 i 更改为 ii,它就可以工作。
在第一次调用 func2 后,func1 中 for 循环中的 i 实际上变为 100,这是 javascript 中的预期行为吗?
如果这是真的,是否有任何方法可以在不以不同方式命名每个索引的情况下解决此问题?当嵌套了很多函数调用时,这非常烦人。
【问题讨论】:
-
i在哪里声明?它的范围是什么? -
i在此代码中是全局的(并且两个函数的变量相同)
标签: javascript for-loop scope