我看了一下,我没有找到一个明确的答案,为什么当这个程序代码运行时,它返回myInt为0.我读过有关变量如何仅在内部更改的帖子功能,但从我的角度来看,我没有看到为什么myInt无法改变的原因。对于参考,这是在Javascript。
var myInt = 0;
function changeVar(x) {
x += 1;
}
changeVar(myInt);
console.log(myInt);
答案 0 :(得分:0)
myInt
未发生变化的原因是x
具有本地范围(您对x
所做的任何操作只会影响x
内changeVar
的值)。
以下是您如何从myInt
更改changeVar()
:
var myInt = 0;
function changeVar() {
myInt += 1;
}
changeVar();
console.log(myInt);
如果要通过将变量作为参数传递来更改变量,则应该传递一个对象:
var myObject1 = {value: 0}
var myObject2 = {value: 10}
function changeVar(x) {
x['value'] += 1;
}
console.log(myObject1['value']);
console.log(myObject2['value']);
changeVar(myObject1);
console.log(myObject1['value']);
console.log(myObject2['value']);
答案 1 :(得分:0)
我将扩展@N.Kern给出的例子 - 这是一个更好的例子,说明如何更改函数中传递的初始变量:
var myInt = 0;
function changeVar(x) {
return x += 1;
}
var y = changeVar(myInt);
console.log(y);
现在,@Shekhar Chikara在评论中提供了这个原因。本质上,传递给函数的值在函数的局部范围内被修改,但它实际上并没有被分配回(或保存在内存中)全局声明的变量。因此,当您记录原始全局变量时,您将获得未更改的值。因此,您只想将函数的返回值保存到它自己的变量中。
This会让您开始研究更多内容。
希望这有帮助。