我有一个反转数组的函数:
function reverseArray(array) {
for(let i = 0; i <= Math.floor(array.length / 2); i++) {
let old = array[array.length - 1 - i];
array[array.length - 1 - i] = array[i];
array[i] = old;
}
return array;
}
以及一个创建本地范围数组并按相反顺序推送值的函数:
function reverseArr(arr) {
let output = [];
for(let i of arr) {
output.unshift(i);
}
arr = output;
return arr;
}
假设有一个元素:
let arrayValue = [1, 2, 3, 4, 5];
如果我使用 arrayValue 作为参数调用第一个函数,则 arrayValue 会更改:
reverseArray(arrayValue); // [5, 4, 3, 2, 1]
console.log(arrayValue); // [5, 4, 3, 2, 1]
但是,如果我使用 arrayValue 调用第二个函数:
reverseArr(arrayValue); //[5, 4, 3, 2, 1]
console.log(arrayValue); //[1, 2, 3, 4, 5]
即使我在返回之前将相反的值分配给参数, arrayValue 也不会更改:
arr = output;
有人可以解释一下为什么吗?
元芳怎么了
慕码人2483693
胡说叔叔
相关分类