javascript连续赋值问题


前几天在搜索面试题时发现了这么一段代码,执行完后感觉完全不与所想的一样

 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.

本人猜想,该条语句执行的顺序为,先将左边变量取出,然后执行赋值.(在执行该条语句前,先将对象引用取出,然后从右到左执行赋值)


以上所述就是本文的全部内容了,希望大家能够喜欢



相关阅读:
Win10 Mobile周年更新将于8月9日上线
asp.net使用npoi读取excel模板并导出下载详解
Win10累积补丁KB3124200更新后版本同升为10586.36
Java中对AtomicInteger和int值在多线程下递增操作的测试
解决Win7系统USB接口没反应的方法
在Android中 获取正在运行的Service 实例
使用JQuery库提供的扩展功能实现自定义方法
JS实现两个大数(整数)相乘
js post提交调用方法
解决js下referer兼容各大浏览器的方法
js实现点击按钮后给Div图层设置随机背景颜色的方法
浅析MYSQL REPEATABLE-READ隔离级别
扩展KMP算法(Extend KMP)
防止Xen VPS用户自己修改IP地址的方法
快速导航
PHP MySQL HTML CSS JavaScript MSSQL AJAX .NET JSP Linux Mac ASP 服务器 SQL jQuery C# C++ java Android IOS oracle MongoDB SQLite wamp 交通频道 作文范文 初中初一作文750字:请放手 我心所在,即是永恒 捉鱼比赛作文 基层派出所所长竞聘演讲 你那么爱他,却不会爱自己 市建设局党委工作思路_企划文案 学习贯彻中纪委十八届六次全会精神心得体会 紫色的旋律 谈谈武林外传作文400字 故乡的秋天让我陶醉 关于初中生节约资源的作文:地球资源是有限的 【精品】分数乘法教学反思 关于除夕的作文范文:新年团圆 我心中的世外桃源作文550字 【若你还在,我便一直爱】 猴年新年贺词大全 优美句子:知音少,弦断有谁听 夜晚的星空 按照下面这些方法做,你会变得更漂亮! 旧旧的时光,旧旧的照片,旧旧的身影,旧旧的想念 CS之菜鸟与神(正文)作文1000字 又一次的人生洗礼 一条路叫“人生” 路在那里 步虚词十首 2016小学生暑假家长评语 示范单位活动开展汇报材料 非主流qq伤感心情短语 注意安全 珍爱生命1000字作文 建筑施工合同书格式 感受舜帝陵 元宵节的习俗作文 爱心就在你身边 书是人类的朋友 吴颖.财富的源泉作文900字 缓一缓,漫步人生 舞蹈《快乐、和谐》串词 朗诵词 厦门海底世界作文800字 中国共产党双拥工作的历史 我爱之人皆散落天下 带着诚信上路作文900字 财政局领导班子工作总结 还好当时没有放弃 向上生长的根 青春别怕“折腾” 野草莓 窗下的蒲公英 关于冬天的古诗句 线描画 金秋田间游作文600字

Copyright © 2016 phpStudy |