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 相关文章推荐
window.location.href IE下跳转失效的解决方法
Mar 27 Javascript
js实现n秒倒计时后才可以点击的效果
Dec 20 Javascript
Vue.js实现拖放效果的实例
Sep 30 Javascript
JavaScript中无法通过div.style.left获取值的解决方法
Feb 19 Javascript
BootStrap Fileinput插件和Bootstrap table表格插件相结合实现文件上传、预览、提交的导入Excel数据操作步骤
Aug 07 Javascript
微信小程序实现图片上传功能
May 28 Javascript
JavaScript捕捉事件和阻止冒泡事件实例分析
Aug 03 Javascript
JavaScript常用工具方法封装
Feb 12 Javascript
浅谈vue异步数据影响页面渲染
Oct 29 Javascript
vue路由拦截器和请求拦截器知识点总结
Nov 08 Javascript
jQuery实现容器间的元素拖拽功能
Dec 01 jQuery
vue 动态创建组件的两种方法
Dec 31 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
关于Iframe如何跨域访问Cookie和Session的解决方法
2013/04/15 PHP
PHP static局部静态变量和全局静态变量总结
2014/03/02 PHP
ThinkPHP权限认证Auth实例详解
2014/07/22 PHP
基于PHP的简单采集数据入库程序
2014/07/30 PHP
PHP正则匹配日期和时间(时间戳转换)的实例代码
2016/12/14 PHP
PHP实现微信对账单处理
2018/10/01 PHP
使用CSS3实现字体颜色渐变的实现
2021/03/09 HTML / CSS
让innerHTML的脚本也可以运行起来
2006/07/01 Javascript
javascript js cookie的存储,获取和删除
2007/12/29 Javascript
js对列表中第一个值处理与jsp页面对列表中第一个值处理的区别详解
2013/11/05 Javascript
Javascript玩转继承(二)
2014/05/08 Javascript
使用JQuery在线制作ppt并在线演示源码特效
2015/09/08 Javascript
JavaScript中常用的验证reg
2016/10/13 Javascript
Angular.js中数组操作的方法教程
2017/07/31 Javascript
angularjs使用div模拟textarea文本框的方法
2018/10/02 Javascript
javascript实现手动点赞效果
2019/04/09 Javascript
js 下拉菜单点击旁边收起实现(踩坑记)
2019/09/29 Javascript
使用python编写android截屏脚本双击运行即可
2014/07/21 Python
Python的Django框架中if标签的相关使用
2015/07/15 Python
python3.4+pycharm 环境安装及使用方法
2019/06/13 Python
使用python分析统计自己微信朋友的信息
2019/07/19 Python
django rest framework vue 实现用户登录详解
2019/07/29 Python
python中Mako库实例用法
2020/12/31 Python
python安装mysql的依赖包mysql-python操作
2021/01/01 Python
Jupyter Notebook 远程访问配置详解
2021/01/11 Python
HTML5适合的情人节礼物有纪念日期功能
2021/01/25 HTML / CSS
三星俄罗斯授权在线商店:Samsung俄罗斯
2019/09/28 全球购物
村委会主任先进事迹
2014/01/15 职场文书
《这儿真好》教学反思
2014/02/22 职场文书
派出所正风肃纪剖析材料
2014/10/10 职场文书
自查自纠工作总结
2014/10/15 职场文书
2015年爱国卫生工作总结
2015/04/22 职场文书
借钱欠条怎么写
2015/07/03 职场文书
考研经验交流会策划书
2015/11/02 职场文书
学习心得体会
2019/06/20 职场文书
恶魔之树最顶端的三颗果实 震震果实上榜,第一可以制造岩浆
2022/03/18 日漫