请问以下JS代码输出的结果是什么? let obj = {   num1: 117 } let res = obj; obj.child = obj = { num2: 935 }; var x = y = res.child.num2; console.log(obj.child); console.log(res.num1); console.log(y);-笔试面试资料

这是qklbishe.com第19063 篇笔试面试资料
提供答案分析,通过本文《请问以下JS代码输出的结果是什么? let obj = {   num1: 117 } let res = obj; obj.child = obj = { num2: 935 }; var x = y = res.child.num2; console.log(obj.child); console.log(res.num1); console.log(y);-笔试面试资料》可以理解其中的代码原理,这是一篇很好的求职学习资料
本站提供程序员计算机面试经验学习,笔试经验,包括字节跳动/头条,腾讯,阿里,美团,滴滴出行,网易,百度,京东,小米,华为,微软等互联网大厂真题学习背诵。

答案:

请问以下JS代码输出的结果是什么?
let obj = {   num1: 117 } let res = obj; obj.child = obj = { num2: 935 }; var x = y = res.child.num2; console.log(obj.child); console.log(res.num1); console.log(y);

请问以下JS代码输出的结果是什么?   let obj = {   num1: 117 } let res = obj; obj.child = obj = { num2: 935 }; var x = y = res.child.num2; console.log(obj.child); console.log(res.num1); console.log(y); 菜籽花
考察连等赋值。
obj.child = obj = { num2: 935 }; 

JS引擎在执行赋值语句时,会先从左往右解析各个变量名,转换成变量值,然后从右往左执行赋值。
所以这里首先两个obj都为{ num1: 117 }。

接着从右往左:
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;

今天 10:06:42 回复(0)

文章部分来自互联网,侵权联系删除
www.qklbishe.com

区块链毕设网(www.qklbishe.com)全网最靠谱的原创区块链毕设代做网站
部分资料来自网络,侵权联系删除!
资源收费仅为搬运整理打赏费用,用户自愿支付 !
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台 » 请问以下JS代码输出的结果是什么? let obj = {   num1: 117 } let res = obj; obj.child = obj = { num2: 935 }; var x = y = res.child.num2; console.log(obj.child); console.log(res.num1); console.log(y);-笔试面试资料

提供最优质的资源集合

立即查看 了解详情