js局部变量从全局变量中取值,如何才能操作局部变量而不影响到全局变量

有的时候js局部变量从全局变量中取值,然后再对这个局部变量取值会影响到这个全局变量,为什么?单独写这段没问题,在一个很长的js中就有问题,其它函数中这样写也没有问题,只有... 有的时候js局部变量从全局变量中取值,然后再对这个局部变量取值会影响到这个全局变量,为什么?
单独写这段没问题,在一个很长的js中就有问题,其它函数中这样写也没有问题,只有一个函数中这样写有问题,为啥?如何解决?
展开
 我来答
yugi111
2017-08-19 · TA获得超过8.1万个赞
知道大有可为答主
回答量:5.1万
采纳率:70%
帮助的人:1.3亿
展开全部

是会影响的,因为这个数组里面有数组,被赋值后,是引用传递,又是全局,所以肯定要变的,你要复制出一个新数组来操作即可。

例如:

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();

这样就不会改变全局的那个了。

所以我们要在使用数组时,要特别小心。

更多追问追答
追问

先谢谢您的回答,然后,我刚打半天的追问被狗吃了~

我这段代码哪里有问题吗?其中modules是全局变量

241行结果:

这个是错的,

237行打印结果:

这个是对的,default里面的值不一样,请问是哪里的问题呢?

追答
你不是中间对他赋值了么?自己改变了default的值,当然不一样了啊
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式