【发布时间】:2015-03-03 06:12:27
【问题描述】:
如果有人问过这个问题,请原谅我,但我似乎找不到。
我正在尝试创建一个数组并将其反转(不使用反转) 这段代码完美运行:
function reverseArrayInPlace(array) {
for (var i = 0; i < Math.floor(array.length / 2); i++) {
var old = array[i];
array[i] = array[array.length - 1 - i];
array[array.length - 1 - i] = old;
}
return array;
}
var arrayValue = [1, 2, 3, 4, 5];
reverseArrayInPlace(arrayValue);
console.log(arrayValue);
// → [5, 4, 3, 2, 1]
如您所见,它接受array,执行一些逻辑,并返回相同的更改array。
虽然,我不明白为什么这段代码不起作用:
var some_array = [6,7,8,9,10];
function reverseArrayInPlace(array) {
var replacement_array = [];
for (var i = 0; i < some_array.length; i++)
replacement_array.unshift(array[i])
array = replacement_array;
return array;
}
reverseArrayInPlace(some_array);
console.log(some_array);
// → [ 6, 7, 8, 9, 10 ]
此代码还接收一个数组,执行一些逻辑(和赋值)并返回一个数组。为什么它不像第一个那样改变全局变量?有什么办法可以改变它吗?
【问题讨论】:
-
因为您正在创建一个新数组,这就是
replacement_array=[]所做的。请注意,在 JS 中,一切都是按值传递的。此外,replacement_array缺少var。
标签: javascript arrays global-variables variable-assignment