【问题标题】:Can someone explain the following double assignment involving Javascript Object [duplicate]有人可以解释以下涉及Javascript对象的双重分配[重复]
【发布时间】:2018-08-05 05:49:29
【问题描述】:
var foo = {n: 1}
var bar = foo
foo.x = foo = {n: 2}

console.log(foo) // {n: 2}
console.log(bar) // ​​​{n: 1, x: {n: 2 }}​​​​​

谁能解释第三行发生了什么?

【问题讨论】:

    标签: javascript


    【解决方案1】:

    foo.x = foo = {n: 2} 行这样做:

    1. 获取foo正在引用的对象
    2. {n: 2} 分配给foo
    3. 将现在由foo 引用的对象分配给在步骤1. 中确定的对象的属性x

    这与函数调用基本相同,其中 foo 在函数内部被覆盖:

    var foo = {n: 1}
    var bar = foo
    foo.x = test();
    
    console.dir(bar);
    
    function test() {
       foo = 2;
       return 3;
    }

    footest 函数内部发生了变化,但对象 foo 在此之前确定。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-29
      • 1970-01-01
      • 1970-01-01
      • 2018-06-29
      • 2017-11-25
      • 2020-04-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多