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

标签 javascript arrays global-variables

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

相关文章:

javascript - 为什么 mysql 数据库信息不会传递给 express.js 函数?

javascript - 从 Ajax 调用 .Net 中的 SOAP Web 方法时出现 500 服务器错误

perl - 如何在Perl中同时遍历多个列表?

javascript - 在对象数组中添加对象(对象是多维的)

Javascript 检查两个数字数组中最接近的不同值

r - R Shiny 中有全局变量吗?

javascript - 如何删除div中的最后3个div

javascript - 除非填写了所有文本输入字段,否则禁用表单按钮

c - 堆栈和全局变量

c++ - 为什么我无法声明 vector 全局变量?