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.AutoComplete.js中文修正版(支持firefox)
Apr 09 Javascript
用于deeplink的js方法(判断手机是否安装app)
Apr 02 Javascript
JS实现兼容各浏览器解析XML文档数据的方法
Jun 01 Javascript
五种js判断是否为整数类型方式
Dec 03 Javascript
Node.js Sequelize如何实现数据库的读写分离
Oct 23 Javascript
简单理解js的prototype属性及使用
Dec 07 Javascript
微信小程序page的生命周期和音频播放及监听实例详解
Apr 07 Javascript
动态加载权限管理模块中的Vue组件
Jan 16 Javascript
jQuery 改变P标签文本值方法
Feb 24 jQuery
JS实现将二维数组转为json格式字符串操作示例
Jul 12 Javascript
微信小程序左右滚动公告栏效果代码实例
Sep 16 Javascript
vue keep-alive实现多组件嵌套中个别组件存活不销毁的操作
Oct 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
小偷PHP+Html+缓存
2006/12/20 PHP
php 获取一个月第一天与最后一天的代码
2010/05/16 PHP
Base64在线编码解码实现代码 演示与下载
2011/01/08 PHP
php进行支付宝开发中return_url和notify_url的区别分析
2014/12/22 PHP
WordPress中获取页面链接和标题的相关PHP函数用法解析
2015/12/17 PHP
通过修改Laravel Auth使用salt和password进行认证用户详解
2017/08/17 PHP
php 调用百度sms来发送短信的实现示例
2018/11/02 PHP
php弹出提示框的是实例写法
2019/09/26 PHP
Laravel框架实现抢红包功能示例
2019/10/31 PHP
js 操作符实例代码
2009/10/24 Javascript
php与js的区别是什么
2013/08/05 Javascript
js拖动div 当鼠标移动时整个div也相应的移动
2013/11/21 Javascript
JS实现带缓冲效果打开、关闭、移动一个层的方法
2015/05/09 Javascript
jQuery右下角悬浮广告实例
2016/10/17 Javascript
浅谈html转义及防止javascript注入攻击的方法
2016/12/04 Javascript
微信小程序使用Vant Weapp组件库的方法步骤
2019/08/01 Javascript
vue+render+jsx实现可编辑动态多级表头table的实例代码
2020/04/01 Javascript
关于IDEA中的.VUE文件报错 Export declarations are not supported by current JavaScript version
2020/10/17 Javascript
jQuery实现可以计算进制转换的计算器
2020/10/19 jQuery
全网小程序接口请求封装实例代码
2020/11/06 Javascript
Python获取文件所在目录和文件名的方法
2017/01/12 Python
深入浅析python3中的unicode和bytes问题
2019/07/03 Python
python中pip的使用和修改下载源的方法
2019/07/08 Python
python实现动态数组的示例代码
2019/07/15 Python
python实现ip地址查询经纬度定位详解
2019/08/30 Python
Django项目基础配置和基本使用过程解析
2019/11/25 Python
美国职棒大联盟官方网上商店:MLBShop.com
2017/11/12 全球购物
HolidayLettings英国:预订最好的度假公寓、别墅和自助式住宿
2019/08/27 全球购物
东南亚冒险旅行与活动:Adventoro
2019/10/16 全球购物
蔻驰英国官网:COACH英国
2020/07/19 全球购物
The North Face官方旗舰店:美国著名户外品牌
2020/09/28 全球购物
英语专业学生的自我评价
2013/12/30 职场文书
土建资料员岗位职责
2014/01/04 职场文书
学生上课迟到检讨书
2015/01/01 职场文书
中学语文教学反思
2016/02/16 职场文书
Mysql 如何批量插入数据
2021/04/06 MySQL