分类分类
更新时间:2026-04-09 15:28:03作者: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.
本人猜想,该条语句执行的顺序为,先将左边变量取出,然后执行赋值.(在执行该条语句前,先将对象引用取出,然后从右到左执行赋值)

以上所述就是本文的全部内容了,希望大家能够喜欢
相关
傲视神魔传手游策略游戏13.55 Mv1.0.02026-04-09
下载三国志王道天下策略游戏2.18Gv0.9.8.12026-04-09
下载风云三国手机版策略游戏213.99 M2026-04-09
下载星之海手机版角色扮演2.78Gv1.1.598772026-04-09
下载迪士尼梦幻王国经营养成79.34 Mv11.5.0h2026-04-09
下载TapAim动作射击97.92 Mv2.0.12026-04-09
下载肖邦大冒险九游版策略游戏133.64 Mv1.02026-04-09
下载放松时光与你共享Lo-Fi故事休闲益智951.66 Mv1.4.62026-04-09
下载羽毛球对决体育竞技175.66 Mv4.12026-04-09
下载假面骑士泽兹变身模拟器休闲益智51.91 Mv1.00.302026-04-09
下载餐车厨师烹饪游戏苹果版模拟游戏327.2 Mv8.682026-04-09
下载最终幻想7永恒危机ios版角色游戏1.5Gv3.6.02026-04-09
下载










