javascript再而三赋值难题

永利402com官方网站

图片 1

javascript一连赋值难题,javascript赋值

前些天在寻找面试题时意识了如此一段代码,实施完后以为完全不与所想的均等

 var a = {
   n : 1
 };
 var b = a;
 a.x = a = {n : 2};
 console.log(a.x);
 console.log(b.x);

出口结果为:

undefined

[object Object]

一初始认为语句应该是先给 a 赋值 {n : 2} , 然后再将 a.x 赋值 {n : 2} ;

但实况却不是那么,于是退换了弹指间代码,增添几条log

var test;
var a = {
  get test () {
    console.log("call a get");
    return test;
  },
  set test (value) {
    console.log("call a set");
    test = value;
  }
}
var test2;
var b = {
  get test2 () {
    console.log("call b get");
    return test2;
  },
  set test2 (value) {
    console.log("call b set");
    test2 = value;
  }
}
a.test = {
  n : 1
};
b.test2 = a.test;
console.log("begin");
a.test.x = a.test = {n : 2};

那样,在begin后面,那条赋值到底施行了怎么样就一览无余了.

图片 2

那是语句推行时打字与印刷的log

先触发了壹回get,然后触发了二回set.

自己算计,该条语句推行的顺序为,先将右边手变量抽出,然后实施赋值.(在进行该条语句前,先将对象引用收取,然后从右到左实践赋值)

图片 3

如上所述正是本文的全体内容了,希望我们能够欣赏

明日在寻觅面试题时开掘了这么一段代码,实施完后以为完全不与所想的大同小异var a = { n : 1 }; var b = a…

一齐先感觉语句应该是先给 a 赋值 {n : 2} , 然后再将 a.x 赋值 {n : 2} ;

你大概感兴趣的篇章:

  • js 三番五次赋值的简约完结
  • js中变量的总是赋值(实例讲授)

这么,在begin前面,那条赋值到底实践了何等就一览无余了.

图片 4

但实际却不是那么,于是改造了弹指间代码,增加几条log

输出结果为:

undefined

那是语句施行时打印的log

 var a = {
   n : 1
 };
 var b = a;
 a.x = a = {n : 2};
 console.log(a.x);
 console.log(b.x);

明天在搜索面试题时意识了这么一段代码,实行完后以为完全不与所想的同样

自己猜测,该条语句实践的逐个为,先将左臂变量抽出,然后实践赋值.(在实行该条语句前,先将指标引用抽取,然后从右到左施行赋值)

先触发了贰遍get,然后触发了三遍set.

var test;
var a = {
  get test () {
    console.log("call a get");
    return test;
  },
  set test (value) {
    console.log("call a set");
    test = value;
  }
}
var test2;
var b = {
  get test2 () {
    console.log("call b get");
    return test2;
  },
  set test2 (value) {
    console.log("call b set");
    test2 = value;
  }
}
a.test = {
  n : 1
};
b.test2 = a.test;
console.log("begin");
a.test.x = a.test = {n : 2};

以上所述正是本文的全体内容了,希望我们可以欣赏

[object Object]

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图