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 相关文章推荐
js操作Xml(向服务器发送Xml,处理服务器返回的Xml)(IE下有效)
Jan 30 Javascript
利用js 进行输入框自动匹配字符的小例子
Jun 29 Javascript
完美解决AJAX跨域问题
Nov 01 Javascript
javascript实现控制的多级下拉菜单
Jul 05 Javascript
js实现的下拉框二级联动效果
Apr 30 Javascript
JS实现pasteHTML兼容ie,firefox,chrome的方法
Jun 22 Javascript
使用vue.js写一个tab选项卡效果
Mar 25 Javascript
Vue-router 类似Vuex实现组件化开发的示例
Sep 15 Javascript
jquery鼠标悬停导航下划线滑出效果
Sep 29 jQuery
Angularjs之如何在跨域请求中传输Cookie的方法
Jun 01 Javascript
小程序实现发表评论功能
Jul 06 Javascript
eslint 的三大通用规则详解
May 16 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
在线竞拍系统的PHP实现框架(二)
2006/10/09 PHP
php 输出双引号"与单引号'的方法
2010/05/09 PHP
php生成的html meta和link标记在body标签里 顶部有个空行
2010/05/18 PHP
PHP获取ip对应地区和使用网络类型的方法
2015/03/11 PHP
理解Javascript_13_执行模型详解
2010/10/20 Javascript
一个JavaScript用逗号分割字符串实例
2014/09/22 Javascript
浅谈JSON和JSONP区别及jQuery的ajax jsonp的使用
2014/11/23 Javascript
jQuery实现分章节锚点“回到顶部”动画特效代码
2015/10/23 Javascript
Bootstrap的popover(弹出框)在append后弹不出(失效)
2017/02/27 Javascript
jQuery插件Echarts实现的双轴图效果示例【附demo源码下载】
2017/03/04 Javascript
jQuery实现可兼容IE6的淡入淡出效果告警提示功能示例
2017/09/20 jQuery
浅谈JS 数字和字符串之间相互转化的纠纷
2017/10/20 Javascript
详解JavaScript基础知识(JSON、Function对象、原型、引用类型)
2018/01/16 Javascript
JS+H5 Canvas实现时钟效果
2018/07/20 Javascript
JS选取DOM元素常见操作方法实例分析
2018/12/10 Javascript
vue-cli3+typescript新建一个项目的思路分析
2019/08/06 Javascript
使用vue制作滑动标签
2019/09/21 Javascript
vue中el-input绑定键盘按键(按键修饰符)
2020/07/22 Javascript
解决vue cli4升级sass-loader(v8)后报错问题
2020/07/30 Javascript
手写Vue2.0 数据劫持的示例
2021/03/04 Vue.js
python类继承用法实例分析
2014/10/10 Python
python 对给定可迭代集合统计出现频率,并排序的方法
2018/10/18 Python
Python设计模式之代理模式实例详解
2019/01/19 Python
Python批量生成幻影坦克图片实例代码
2019/06/04 Python
详解用Python为直方图绘制拟合曲线的两种方法
2019/08/21 Python
python爬虫开发之PyQuery模块详细使用方法与实例全解
2020/03/09 Python
函数只定义了一次, 调用了一次, 但编译器提示非法重定义了-什么问题?
2014/10/03 面试题
explicit和implicit的含义
2012/11/15 面试题
优秀本科生求职推荐信
2014/02/24 职场文书
植树节标语
2014/06/27 职场文书
连锁超市项目计划书
2014/09/15 职场文书
教学改革问题查摆整改措施
2014/09/27 职场文书
挂职个人工作总结
2015/03/05 职场文书
2019年七夕情人节浪漫祝福语大全!
2019/08/08 职场文书
教你怎么用Python实现多路径迷宫
2021/04/29 Python
MongoDB数据库部署环境准备及使用介绍
2022/03/21 MongoDB