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 相关文章推荐
javascript prototype 原型链
Mar 12 Javascript
jQuery结合PHP+MySQL实现二级联动下拉列表[实例]
Nov 15 Javascript
js函数在frame中的相互调用详解
Mar 03 Javascript
AngularJS单选框及多选框实现双向动态绑定
Jan 13 Javascript
JavaScript中利用jQuery绑定事件的几种方式小结
Mar 06 Javascript
js实现的简单图片浮动效果完整实例
May 10 Javascript
javascript实现根据汉字获取简拼
Sep 25 Javascript
Bootstrap Table使用整理(四)之工具栏
Jun 09 Javascript
Weex开发之地图篇的具体使用
Oct 16 Javascript
Vue 中获取当前时间并实时刷新的实现代码
May 12 Javascript
JavaScript实现矩形块大小任意缩放
Aug 25 Javascript
浅谈Vue开发人员的7个最好的VSCode扩展
Jan 20 Vue.js
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通过iconv将字符串从GBK转换为UTF8字符集
2011/07/18 PHP
PHP在linux上执行外部命令的方法
2017/02/06 PHP
详解yii2使用多个数据库的案例
2017/06/16 PHP
Yii使用DbTarget实现日志功能的示例代码
2020/07/21 PHP
JQuery入门——用one()方法绑定事件处理函数(仅触发一次)
2013/02/05 Javascript
Javascript中封装window.open解决不兼容问题
2014/09/28 Javascript
纯javascript实现简单下拉刷新功能
2015/03/13 Javascript
谈谈我对JavaScript中typeof和instanceof的深入理解
2015/12/25 Javascript
关于Vue.js一些问题和思考学习笔记(1)
2016/12/02 Javascript
Angular组件化管理实现方法分析
2017/03/17 Javascript
手把手教你搭建ES6的开发运行环境
2017/07/11 Javascript
vue-router 起步步骤详解
2019/03/26 Javascript
layui使用form表单实现post请求页面跳转的方法
2019/09/14 Javascript
JavaScript相等运算符的九条规则示例详解
2019/10/20 Javascript
vue中是怎样监听数组变化的
2020/10/24 Javascript
python实现树形打印目录结构
2018/03/29 Python
python将秒数转化为时间格式的实例
2018/09/16 Python
详解python中的线程与线程池
2019/05/10 Python
python递归调用中的坑:打印有值, 返回却None
2020/03/16 Python
Nasty Gal英国:美国女性服饰销售网站
2021/03/02 全球购物
以太网Ethernet IEEE802.3
2013/08/05 面试题
单身联谊活动方案
2014/01/29 职场文书
士力架广告词
2014/03/20 职场文书
静心口服夜广告词
2014/03/20 职场文书
函授毕业生自我鉴定范文
2014/03/25 职场文书
新农村建设典型材料
2014/05/31 职场文书
党员批评与自我批评
2014/10/15 职场文书
售票员岗位职责
2015/02/15 职场文书
聘任书范文大全
2015/09/21 职场文书
新兵入伍决心书
2015/09/22 职场文书
2016春季校长开学典礼致辞
2015/11/26 职场文书
2016七夕情人节寄语
2015/12/04 职场文书
python百行代码实现汉服圈图片爬取
2021/11/23 Python
Centos系统通过Docker安装并搭建MongoDB数据库
2022/04/12 MongoDB
Python查找算法的实现 (线性、二分,分块、插值查找算法)
2022/04/24 Python
Qt数据库应用之实现图片转pdf
2022/06/01 Java/Android