关于js中连续赋值的问题, 一般情况写不要随便写连续赋值, 容易出问题 考虑下一下会输出什么内容, 先思考下, 然后上机测试下看看考虑的对不对
var a = { n:1, } var b =a ; a.x = a = {n:2} console.log(a.x); console.log(b.x); console.log(a); console.log(b);
答案:
var a = {
n:1,
}
var b =a ;
a.x = a = {n:2}
//a指向了一个新地址
//a.x原来中的a还是指向原来位置,所以 a.x = a = {n:2} 等于实现了 a.x = {n:2}
console.log(a.x); //undefined , 原因是此时a 因为a = {n:2}操作, a的指向已经变了, 现在a跟之前的a.n中的a不是一个指向了
console.log(b.x); //{n:2}
console.log(a); //{n:2} a指向了一个新地址
console.log(b); //{n:1 x:{n:2} //a.x原来中的ah还是指向原来位置 a.x = a = {n:2} 等于实现了 a.x = {n:2}