我不知道为什么我的函数不更改全局变量(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]

最佳答案

您问题中的主要问题...



...就是您误用了函数(也称为arrayValue)中函数(名为arrayValue)中的参数

如果给函数另一个参数,您可以很容易地看到这一点:

function reverseArrayInPlace(arrValue) {
  var newArr = [];
  for (var i = 0; i < arrValue.length; i++) {
    newArr.unshift(arrValue[i]);
  }
  arrayValue = newArr;
}

var arrayValue = [1, 2, 3, 4, 5];

reverseArrayInPlace(arrayValue);

console.log(arrayValue);


请注意,在此代码段中,该函数未返回任何内容(实际上是在返回undefined),只是更改了全局变量。

10-04 23:43