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 改变CSS样式基础代码
Feb 11 Javascript
收集的一些Array及String原型对象的扩展实现代码
Dec 05 Javascript
jQuery响应enter键的实现思路
Apr 18 Javascript
基于Css3和JQuery实现打字机效果
Aug 11 Javascript
BootStrap下jQuery自动完成的样式调整
May 30 Javascript
JS实现的验证身份证及获取地区功能示例
Jan 16 Javascript
vue指令以及dom操作详解
Mar 04 Javascript
jQuery实现简单漂亮的Nav导航菜单效果
Mar 29 jQuery
详解从react转职到vue开发的项目准备
Jan 14 Javascript
layui的layedit富文本赋值方法
Sep 18 Javascript
vue-openlayers实现地图坐标弹框效果
Sep 24 Javascript
javascript全局自定义鼠标右键菜单
Dec 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
php字符串分割函数explode的实例代码
2013/02/07 PHP
php获取从百度搜索进入网站的关键词的详细代码
2014/01/08 PHP
10个值得深思的PHP面试题
2016/11/14 PHP
php实现连接access数据库并转txt写入的方法
2017/02/08 PHP
PHP常量DIRECTORY_SEPARATOR原理及用法解析
2020/11/10 PHP
用js实现键盘方向键翻页功能的代码
2007/06/03 Javascript
IE 上下滚动展示模仿Marquee机制
2009/12/20 Javascript
javascript代码编写需要注意的7个小细节小结
2011/09/21 Javascript
jquery配合css简单实现返回顶部效果
2013/09/30 Javascript
动态显示可输入的字数提示还可以输入的字数
2014/04/01 Javascript
js实现人才网站职位选择功能的方法
2015/08/14 Javascript
jquery轮播的实现方式 附完整实例
2016/07/28 Javascript
基于JavaScript实现移动端无限加载分页
2017/03/27 Javascript
jQuery模拟实现天猫购物车动画效果实例代码
2017/05/25 jQuery
微信小程序之网络请求简单封装实例详解
2017/06/28 Javascript
vue-router+vuex addRoutes实现路由动态加载及菜单动态加载
2017/09/28 Javascript
对vue.js中this.$emit的深入理解
2018/02/23 Javascript
解决vue.js 数据渲染成功仍报错的问题
2018/08/25 Javascript
微信小程序如何获取手机验证码
2018/11/04 Javascript
微信小程序和百度的语音识别接口详解
2019/05/06 Javascript
详解关于表格合并span-method方法的补充(表格数据由后台动态返回)
2019/05/21 Javascript
[56:38]DOTA2-DPC中国联赛正赛Aster vs Magma BO3 第一场 3月5日
2021/03/11 DOTA
尝试使用Python多线程抓取代理服务器IP地址的示例
2015/11/09 Python
Python中字符串的格式化方法小结
2016/05/03 Python
Python实现判断一个字符串是否包含子串的方法总结
2017/11/21 Python
Django处理多用户类型的方法介绍
2019/05/18 Python
opencv调整图像亮度对比度的示例代码
2019/09/27 Python
怀旧收藏品和经典纪念品:Betty’s Attic
2018/08/29 全球购物
西班牙最好的在线购买葡萄酒的商店:Vinoseleccion
2019/10/30 全球购物
毕业生就业自荐信
2013/12/04 职场文书
班干部演讲稿
2014/04/24 职场文书
2015秋季开学演讲稿范文
2015/07/16 职场文书
2016寒假社会实践心得体会范文
2015/10/09 职场文书
SpringBoot 集成Redis 过程
2021/06/02 Redis
微软团队与 NASA 科学家和惠普企业(HPE)的工程师合作
2022/04/21 数码科技
全网非常详细的pytest配置文件
2022/07/15 Python