function funcArr(arr){
var res = arr;
res.pop();
alert(arr === res);
}
funcArr([1,2,3]) // true
function funcNum(num){
var res = num;
res++;
alert(num === res);
}
funcNum(3) // false
在funcArr中复制了参数arr,函数体内res与arr一起变化(最后res=[1,2];num=[1,2]);
在funcArr中复制了参数num,函数体内res与num变化是独立的(最后res=4;num=3);
原因?
javascript的函数参数传递都是值传递。
实际上第一个传进去的是数组的地址,所以对同一地址的数据进行修改必然能够改变传入参数数组的数据。
而第二个实际只传入值,所以对传入的参数不会有影响。