javascript连续赋值问题


Posted in Javascript onJuly 08, 2015

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

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后边,这条赋值到底执行了什么就一目了然了.

javascript连续赋值问题

这是语句执行时打印的log

先触发了一次get,然后触发了一次set.

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

javascript连续赋值问题

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

Javascript 相关文章推荐
jquery text(),val(),html()方法区别总结
Nov 04 Javascript
JS之Date对象和获取系统当前时间详解
Jan 13 Javascript
Javascript window对象详解
Nov 12 Javascript
jquery实现动态改变div宽度和高度
May 08 Javascript
javascript动画之磁性吸附效果篇
Dec 09 Javascript
JS操作input标签属性checkbox全选的实现代码
Mar 02 Javascript
Postman模拟发送带token的请求方法
Mar 31 Javascript
微信小程序实现人脸识别
May 25 Javascript
Vue父子组件之间的通信实例详解
Sep 28 Javascript
layui实现下拉框三级联动
Jul 26 Javascript
原生js实现日历效果
Mar 02 Javascript
vue props default Array或是Object的正确写法说明
Jul 30 Javascript
JavaScript中函数(Function)的apply与call理解
Jul 08 #Javascript
JavaScript forEach()遍历函数使用及介绍
Jul 08 #Javascript
JavaScript中调用函数的4种方式代码实例
Jul 08 #Javascript
JavaScript对象属性检查、增加、删除、访问操作实例
Jul 08 #Javascript
jquery获取多个checkbox的值异步提交给php
Jul 07 #Javascript
浅谈jQuery中setInterval()方法
Jul 07 #Javascript
javascript数组排序汇总
Jul 07 #Javascript
You might like
在“咖啡之国”感受咖啡文化
2021/03/03 咖啡文化
PHP json格式和js json格式 js跨域调用实现代码
2012/09/08 PHP
使用php记录用户通过搜索引擎进网站的关键词
2014/02/13 PHP
php递归方法实现无限分类实例代码
2014/02/28 PHP
laravel5创建service provider和facade的方法详解
2016/07/26 PHP
详解no input file specified 三种解决方法
2019/11/29 PHP
Prototype使用指南之selector.js说明
2008/10/26 Javascript
BootStrap table表格插件自适应固定表头(超好用)
2016/08/24 Javascript
JS搜狐面试题分析
2016/12/16 Javascript
Angularjs的键盘事件的绑定
2017/07/27 Javascript
详解JavaScript按概率随机生成事件
2017/08/02 Javascript
通过一次报错详细谈谈Point事件
2018/05/17 Javascript
浅谈bootstrap layer.open中end的使用方法
2019/09/12 Javascript
浅析Vue下的components模板使用及应用
2019/11/27 Javascript
零基础写python爬虫之爬虫框架Scrapy安装配置
2014/11/06 Python
Python中用sleep()方法操作时间的教程
2015/05/22 Python
用Python写飞机大战游戏之pygame入门(4):获取鼠标的位置及运动
2015/11/05 Python
Python优化技巧之利用ctypes提高执行速度
2016/09/11 Python
python正则表达式re之compile函数解析
2017/10/25 Python
Python编程使用NLTK进行自然语言处理详解
2017/11/16 Python
python3+mysql查询数据并通过邮件群发excel附件
2018/02/24 Python
Python实现对字典分别按键(key)和值(value)进行排序的方法分析
2018/12/19 Python
python抓取网页内容并进行语音播报的方法
2018/12/24 Python
解决pyinstaller打包pyqt5的问题
2019/01/08 Python
利用pandas合并多个excel的方法示例
2019/10/10 Python
基于python3 的百度图片下载器的实现代码
2019/11/05 Python
Python输出指定字符串的方法
2020/02/06 Python
opencv 实现特定颜色线条提取与定位操作
2020/06/02 Python
Python如何执行系统命令
2020/09/23 Python
物理系毕业生自荐信
2013/11/01 职场文书
人力资源经理的岗位职责范本
2014/02/28 职场文书
森林防火标语
2014/06/23 职场文书
社会发展项目建议书
2014/08/25 职场文书
2015年高二班主任工作总结
2015/05/25 职场文书
Python爬虫之用Xpath获取关键标签实现自动评论盖楼抽奖(二)
2021/06/07 Python
vue使用localStorage持久性存储实现评论列表
2022/04/14 Vue.js