我用两个函数 a()
和 b()
编写了以下代码。
函数a()
有一个循环,如下所示,在该循环内它调用函数b()
。问题是第一个函数的循环计数器从 b()
获取其值,然后停止。两个函数之间没有传递任何值,它们唯一的共同点是变量的名称。
谁能解释一下这里到底发生了什么?
根据我的理解,它们都应该有自己的 x
副本,除非我声明 x
是全局的。
http://jsfiddle.net/rahulkadukar/s2gs9j05/
a();
function a() {
for (x = 0; x < 4; x++) {
console.log(x);
b();
console.log(x);
}
}
function b(){
for (x = 0; x < 4; x++) {
//Do nothing
}
}
上述函数的输出为
0
4
最佳答案
由于您没有使用 var
关键字将变量声明为局部变量,因此它们是全局变量。所以这两个函数都使用相同的变量x
。将其更改为:
for (var x = 0; x < 4; x++)
它们将是每个函数中的局部变量。
关于javascript - 为什么变量值要传递到这里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26696663/