变量赋值时的值引用与地址引用

简单类型(基本类型) 非对象或数组 为 值引用 ;如下代码 c值没有改变

   var c=5; //传递的是c的值 function setc(c){ c=4; } setc(c) console.log(c) //5 

对象传参 则发现 处理过后 原函数的值进行了改变
在之前双向数据绑定的时候,这样操作数据 就会引发很多问题

var c={a:5},c1=[1];
function setc(c){
   c.a=4;  
   c1[0]=2
}
setc(c)
console.log(c,c1)
//Object {a: 4} [2]

解决方法一般都是进行对象拷贝

var c = { a: 5 }, c1 = [1];
        function setc(c, c1) {
            c = Object.assign({}, c)
            // 或JSON.parse(JSON.stringify(c));
            c1=c1.concat([])
            // 或JSON.parse(JSON.stringify(c));
            c.a = 4;
            c1[0] = 2
        }
        setc(c, c1)
        console.log(c, c1)
//Object {a: 5} [1]

  

转载于:https://www.cnblogs.com/tutu-binbin/p/8603149.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值