我在 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 中的预期行为吗?
如果这是真的,有什么方法可以解决这个问题而不用不同地命名每个索引?当嵌套了很多函数调用时,这会非常烦人。
最佳答案
你需要这样做,
func1() {
for(var i = 2; i < 5; i ++) { // define i here
console.log(i);
func2(i);
}
}
func2(x) {
for(var i = 100; i < 200; i ++) { // define i here
do something
}
}
如果你声明为全局那么它将具有最近的值,所以你需要为每个函数提供唯一的值,你应该在函数内声明
关于函数中for循环索引的Javascript范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46109098/