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