分类分类
更新时间:2026-09-29 20:05:57作者:zhao
前几天在搜索面试题时发现了这么一段代码,执行完后感觉完全不与所想的一样
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后边,这条赋值到底执行了什么就一目了然了.

这是语句执行时打印的log
先触发了一次get,然后触发了一次set.
本人猜想,该条语句执行的顺序为,先将左边变量取出,然后执行赋值.(在执行该条语句前,先将对象引用取出,然后从右到左执行赋值)

以上所述就是本文的全部内容了,希望大家能够喜欢
相关
剑气除魔0.1折版策略游戏13.6 MBv1.0.02026-09-29
下载口袋喵喵策略游戏13.67 MBv1.0.02026-09-29
下载御龙城堡传奇手游策略游戏180.89 MBv1.0.22026-09-29
下载菲尼西雅战记策略游戏164.4 MBv1.2.12026-09-29
下载鏖战三国0.05折版角色扮演13.66 MBv1.0.02026-09-29
下载群英争雄策略游戏1007.72 Mv1.0.12026-09-29
下载梦漫app资讯阅读43.14 Mv1.0.12026-09-29
下载点点大作战经营养成623.91 Mv2.6.2002026-09-29
下载妖怪名单角色扮演13.64 Mv1.0.02026-09-29
下载可露优世界休闲益智790.16 Mv9.92.31.102026-09-29
下载OverPeak超人游戏角色扮演304.38 Mv0.62026-09-29
下载宇宙回形针休闲益智24.07 Mv2.1.282026-09-29
下载







