我有一个 JavaScript 函数,如下所示:
function modifyx(xvalue) {
val = 1;
for (x = 0; x < 10; x++) {
val = val + 1;
}
return val;
}
主代码片段将一个名为 x 的变量传递给上面的函数,如下所示:
for (x = 0; x < 10; x++) {
console.log(modifyx(x));
}
预期输出应该是“11”打印 10 次,但实际上只打印了一次。即使我没有修改传递的值,函数调用也会更改 x 的值。函数内的 x 有其自己的作用域。但它还是被修改了。对此的任何帮助将不胜感激。
最佳答案
变量x
你的代码是 global
。当你的方法 modifyx(xvalue)
第一次返回 x
的值已经是 11,它在第二次迭代的 for 循环中使用。因此无法进一步执行该方法。
使用let x
在 for (x = 0; x < 10; x++)
的声明中创建独特的执行环境。
function modifyx(xvalue) {
val = 1;
for (x = 0; x < 10; x++) {
val = val + 1;
}
return val;
}
for (let x = 0; x < 10; x++) {
console.log(modifyx(x));
}
关于javascript - 函数内同名变量改变传递参数的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47615305/