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的放大镜效果
May 30 Javascript
如何设置一定时间内只能发送一次请求
Feb 28 Javascript
2014最热门的JavaScript代码高亮插件推荐
Nov 25 Javascript
jQuery性能优化技巧分析
Feb 20 Javascript
jquery实现鼠标滑过后动态图片提示效果实例
Aug 10 Javascript
Vue.js移动端左滑删除组件的实现代码
Sep 08 Javascript
详解vue中引入stylus及报错解决方法
Sep 22 Javascript
工作中常用到的ES6语法
Sep 04 Javascript
详解js中let与var声明变量的区别
Apr 05 Javascript
vue项目中锚点定位替代方式
Nov 13 Javascript
JavaScript事件冒泡机制原理实例解析
Jan 14 Javascript
Vue.js使用axios动态获取response里的data数据操作
Sep 08 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
PHPWind 发帖回帖Api PHP版打包下载
2010/02/08 PHP
php设计模式 Observer(观察者模式)
2011/06/26 PHP
PHP运行环境配置与开发环境的配置(图文教程)
2013/06/04 PHP
ThinkPHP中的三大自动简介
2014/08/22 PHP
php5.4以下版本json不支持不转义内容中文的解决方法
2015/01/13 PHP
php文件上传的两种实现方法
2016/04/04 PHP
PHP实现的曲线统计图表示例
2016/11/10 PHP
PHP实现负载均衡的加权轮询方法分析
2018/08/22 PHP
jquery 使用点滴函数代码
2011/05/20 Javascript
超赞的动手创建JavaScript框架的详细教程
2015/06/30 Javascript
原生JavaScript制作计算器
2016/10/16 Javascript
JavaScript中英文字符长度统计方法示例【按照中文占2个字符】
2017/01/17 Javascript
jQuery实现图片滑动效果
2017/03/08 Javascript
vue快捷键与基础指令详解
2017/06/01 Javascript
ES6关于Promise的用法详解
2018/05/07 Javascript
微信小程序实现swiper切换卡内嵌滚动条不显示的方法示例
2018/12/20 Javascript
浏览器事件循环与vue nextTicket的实现
2019/04/16 Javascript
基于Node.js搭建hexo博客过程详解
2019/06/25 Javascript
微信小程序 scroll-view 实现锚点跳转功能
2019/12/12 Javascript
jQuery 选择器用法基础入门示例
2020/01/04 jQuery
JS实现可视化音频效果的实例代码
2020/01/16 Javascript
python获取远程图片大小和尺寸的方法
2015/03/26 Python
Python中Selenium模块的使用详解
2020/10/09 Python
Css3+Js制作漂亮时钟(附源码)
2013/04/24 HTML / CSS
html5自定义video标签的海报与播放按钮功能
2019/12/04 HTML / CSS
皮肤科医师岗位职责
2013/12/04 职场文书
护士岗位求职应聘自荐书范文
2014/02/12 职场文书
学生未请假就回家检讨书
2014/09/22 职场文书
2015幼儿园庆元旦活动方案
2014/12/09 职场文书
捐助倡议书
2015/01/19 职场文书
小学中队活动总结
2015/05/11 职场文书
公司行政管理制度范本
2015/08/05 职场文书
2016党员干部廉洁自律心得体会
2016/01/13 职场文书
入党申请书格式
2019/06/20 职场文书
Pygame Rect区域位置的使用(图文)
2021/11/17 Python
MySQL 数据表操作
2022/05/04 MySQL