考察连等赋值。
1
obj.child = obj = { num2: 935 };
JS引擎在执行赋值语句时,会先从左往右解析各个变量名,转换成变量值,然后从右往左执行赋值。
所以这里首先两个obj都为{ num1: 117 }。
接着从右往左:
1
2
obj = { num2: 935 };//第二个等号赋值
{ num1: 117 }.child = { num2: 935 };//第一个等号赋值
值得注意的是第二个才为真正的obj只有num2。
而第一个obj已经被替换为{ num1: 117 }对象,这个对象中有个child属性,而res又引用了这个对象所以res改变为{ num1:117, child: { num2: 935 } }。
而对var x = y = 935; 同理从右往左执行。可以理解为var x = ( y = 935 );或者y = 935; var x = y;
1
obj.child = obj = { num2: 935 };
JS引擎在执行赋值语句时,会先从左往右解析各个变量名,转换成变量值,然后从右往左执行赋值。
所以这里首先两个obj都为{ num1: 117 }。
接着从右往左:
1
2
obj = { num2: 935 };//第二个等号赋值
{ num1: 117 }.child = { num2: 935 };//第一个等号赋值
值得注意的是第二个才为真正的obj只有num2。
而第一个obj已经被替换为{ num1: 117 }对象,这个对象中有个child属性,而res又引用了这个对象所以res改变为{ num1:117, child: { num2: 935 } }。
而对var x = y = 935; 同理从右往左执行。可以理解为var x = ( y = 935 );或者y = 935; var x = y;
「求助大佬帮看看这道算法题吧!」2 请问以下JS代码输出的结果是什么? let obj = { num1: 117}let res = obj;obj.child = obj = { num2: 935 };var x = y = ...
https://gw-c.nowcoder.com/api/sparta/jump/link?link=https%3A%2F%2Fwww.nowcoder.com%2FquestionTerminal%2Fa94269c8c5274b50bdcabbe4412798c9
全部评论
相关推荐
05-05 12:57
门头沟学院 前端工程师 记着呢:说的很对,已经工作近7年,就是觉得年轻的时候太多忧虑,没有好好玩一玩,虽然现在我也是很多忧心事,但是真的感觉年轻的时光才是最宝贵的,玩的开心,做自己喜欢的事,全力以赴,这才是应该做的
点赞 评论 收藏
分享
04-12 21:52
南开大学 Java
何时能不做牛马:简历每个点之间的间距可以缩一下。几乎没遇到过要演示项目的情况,即使万一遇上了你也可以说部署在其他电脑上本地没代码。nku不应该简历挂吧?抓紧背背八股练练表达,不要放弃,五六月份找到也不晚(不然还得提前入职 点赞 评论 收藏
分享
