手机版

javascript连续赋值问题

时间:2021-09-09 来源:互联网 编辑:宝哥软件园 浏览:

前几天在搜索面试问题的时候发现了这样一段代码。行刑后,我感觉和我想象的完全不一样

var a={ n : 1 };var b=a;a . x=a={ n : 2 };console . log(a . x);console . log(b . x);输出结果是:

不明确的

[对象对象]

一开始我以为语句应该先把{n : 2}赋给A,再把{n3360 2}赋给A.X

但事实并非如此,所以我更改了代码并添加了一些日志

var测试;var a={ get test () { console.log('调用一个get ');返回测试;},set test (value) { console.log('调用一个set ');测试=值;} } var test2var b={ get test2(){ console . log(' call b get ');返回测试2;},set test2(值){ console.log('调用b set ');test2=值;} } a.test={ n : 1 }b . test 2=a . test;console . log(' begin ');a . test . x=a . test={ n : 2 };这样,在begin之后,就可以一目了然这个作业实际执行了什么。

这是执行语句时打印的日志

Get被触发一次,然后set被触发一次。

我猜这个语句的执行顺序是:先取出左边的变量,然后执行赋值(在执行这个语句之前,先取出对象引用,然后从右向左执行赋值)

以上就是本文的全部内容,希望大家都能喜欢

版权声明:javascript连续赋值问题是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。