gpt4 book ai didi

javascript - 无法更改函数内的全局变量(Javascript)

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:07:00 24 4
gpt4 key购买 nike

我不明白为什么我的函数不改变全局变量 (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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com