我不明白为什么我的函数不改变全局变量 (arrayValue) 它只在函数内部更改它,但我想在外部更改它。
function reverseArrayInPlace(arrayValue) {
var newArr = [];
for (var i = 0; i < arrayValue.length; i++) {
newArr.unshift(arrayValue[i]);
}
arrayValue = newArr;
return arrayValue;
}
var arrayValue = [1, 2, 3, 4, 5];
reverseArrayInPlace(arrayValue);
console.log(arrayValue); // It gives [1, 2, 3, 4, 5] instead of [5, 4, 3, 2, 1]
console.log(reverseArrayInPlace(arrayValue)); // It gives [5, 4, 3, 2, 1]
最佳答案
造成混淆的主要原因是您的函数的参数名称与您的全局数组名称发生冲突。
您不是在修改全局数组,而是在修改该函数的局部数组。
您现在有两个选择。
1)接收修改后的数组
reverseArrayInPlace(arrayValue);
该函数正在返回修改后的数组,而您没有收到它。因此它指向旧数组。
arrayValue = reverseArrayInPlace(arrayValue);
2) 函数参数和全局数组具有唯一的命名。
关于javascript - 无法更改函数内的全局变量(Javascript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42810869/