<
关于a.x = a = {n:2} 的思考 [快手]
>
上一篇

死锁是什么
下一篇

冒泡排序也可以这么玩

面试遇到的一个题目, 分享下

关于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}
Top
Foot