js局部变量从全局变量中取值,如何才能操作局部变量而不影响到全局变量
有的时候js局部变量从全局变量中取值,然后再对这个局部变量取值会影响到这个全局变量,为什么?单独写这段没问题,在一个很长的js中就有问题,其它函数中这样写也没有问题,只有...
有的时候js局部变量从全局变量中取值,然后再对这个局部变量取值会影响到这个全局变量,为什么?
单独写这段没问题,在一个很长的js中就有问题,其它函数中这样写也没有问题,只有一个函数中这样写有问题,为啥?如何解决? 展开
单独写这段没问题,在一个很长的js中就有问题,其它函数中这样写也没有问题,只有一个函数中这样写有问题,为啥?如何解决? 展开
1个回答
展开全部
是会影响的,因为这个数组里面有数组,被赋值后,是引用传递,又是全局,所以肯定要变的,你要复制出一个新数组来操作即可。
例如:
var arr = [1,2,[3,4]];
var fn = function(){
var tmp = arr[2];
tmp[0] = null;
console.log(arr);
console.info(tmp);
}
fn();
你看,全局的那个的数组也被改变了
所以要这样操作如下:
var arr = [1,2,[3,4]];
var fn = function(){
var tmp = arr[2].slice(0);
tmp[0] = null;
console.log(arr);
console.info(tmp);
}
fn();
这样就不会改变全局的那个了。
所以我们要在使用数组时,要特别小心。
更多追问追答
追问
追答
你不是中间对他赋值了么?自己改变了default的值,当然不一样了啊
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询