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

简单类型(基本类型) 非对象或数组 为 值引用 ;如下代码 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]

  

posted @ 2018-03-19 16:52  V黑匣子  阅读(202)  评论(0编辑  收藏  举报