js 连续赋值

    var a = {n: 1}
    var b = a;
    a=a.x={n:2};
     // a.x=a={n:2};
    a.y={n:3};
    a.z=a={n:4};
    console.log(a);   //{n:4}
    console.log(a.x); //undefined
    console.log(b);         //{    
                        //    n:1,
                        //    x:{
                        //        n:2,
                        //        y:{
                        //          n:3    
                        //        },
                        //        z:{
                        //          n:4    
                        //        }
                        //    }
                        //}
    
    console.log(b.y); //undefined

  可以解释下为什么b的结果是上面显示?

    
阅读 2.7k
3 个回答

图片描述

大致可以用这张图片描述这个过程,注意 b 始终是保存着“最大”的那个对象

简单来说,a=a.x这一句给a重新赋值了,它自然就跟之前的a完全不一样了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题