javascript - 函数作用域内复制
本文介绍了javascript - 函数作用域内复制的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
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的函数参数传递都是值传递。
实际上第一个传进去的是数组的地址,所以对同一地址的数据进行修改必然能够改变传入参数数组的数据。
而第二个实际只传入值,所以对传入的参数不会有影响。
这篇关于javascript - 函数作用域内复制的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文