为什么第一个函数不像第二个函数那样修改原始数组?
var a= [3, 4, 5];
function doesNothing(a) {
a=[1,1,1];
}
function doesSomething(a) {
a.push(6);
}
doesNothing(a);
console.log(a); // [3,4,5] not [1,1,1]
doesSomething(a);
console.log(a); //[3,4,5,6]
答案 0 :(得分:0)
因为在您的第一个函数中,语句a =
在本地范围内初始化 new 变量(它实际上转换为var a =
)与全局{{1}完全无关变量,而在第二个函数中,你正在调用并改变传入其中的原始数组。
答案 1 :(得分:0)
arr.length=0;
; push()
可以有多个参数,因此您可以:arr.push(...anotherArray)
。