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 滚轮事件使用说明
Mar 07 Javascript
Js实现滚动变色的文字效果
Jun 16 Javascript
window.location的重写及判断location是否被重写
Sep 04 Javascript
JavaScript检测弹出窗口是否已经关闭的方法
Mar 24 Javascript
JavaScript中的getTimezoneOffset()方法使用详解
Jun 10 Javascript
javascript中递归函数用法注意点
Jul 30 Javascript
jQuery实现的手机发送验证码倒计时效果代码分享
Aug 24 Javascript
浅谈js函数的多种定义方法与区别
Nov 29 Javascript
jQuery插件FusionCharts绘制2D环饼图效果示例【附demo源码】
Apr 10 jQuery
js实现图片上传并预览功能
Aug 06 Javascript
Vue登录注册并保持登录状态的方法
Aug 17 Javascript
详解用Webpack与Babel配置ES6开发环境
Mar 12 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
Smarty模板快速入门
2007/01/04 PHP
php使用simplexml_load_file加载XML文件并显示XML的方法
2015/03/19 PHP
ThinkPHP模板Volist标签嵌套循环输出多维数组的方法
2016/03/23 PHP
PHP strip_tags保留多个HTML标签的方法
2016/05/22 PHP
PHP开发中csrf攻击的简单演示和防范
2017/05/07 PHP
PHP实现的多维数组去重操作示例
2018/07/21 PHP
统计PHP目录中的文件数方法
2019/03/05 PHP
javascript 出生日期和身份证判断大全
2008/11/13 Javascript
Kibo 用于处理键盘事件的Javascript工具库
2011/10/28 Javascript
基于JQuery的抓取博客园首页RSS的代码
2011/12/01 Javascript
php图像生成函数之间的区别分析
2012/12/06 Javascript
JavaScript设置首页和收藏页面的小例子
2013/11/11 Javascript
jquery组件使用中遇到的问题整理及解决
2014/02/21 Javascript
js调试系列 控制台命令行API使用方法
2014/06/18 Javascript
node.js中的buffer.slice方法使用说明
2014/12/10 Javascript
jQuery使用fadeout实现元素渐隐效果的方法
2015/03/27 Javascript
jQuery插件slides实现无缝轮播图特效
2015/04/17 Javascript
jQuery的remove()方法使用详解
2015/08/11 Javascript
JavaScript+CSS无限极分类效果完整实现方法
2015/12/22 Javascript
详解在express站点中使用ejs模板引擎
2017/09/21 Javascript
vue+element的表格实现批量删除功能示例代码
2018/08/17 Javascript
使用Node搭建reactSSR服务端渲染架构
2018/08/30 Javascript
Python 将RGB图像转换为Pytho灰度图像的实例
2017/11/14 Python
python机器学习理论与实战(二)决策树
2018/01/19 Python
python实现冒泡排序算法的两种方法
2018/03/10 Python
详解Python 协程的详细用法使用和例子
2018/06/15 Python
Python colormap库的安装和使用详情
2020/10/06 Python
matplotlib制作雷达图报错ValueError的实现
2021/01/05 Python
用css3实现转换过渡和动画效果
2020/03/13 HTML / CSS
css3利用transform变形结合事件完成扇形导航
2020/10/26 HTML / CSS
canvas实现圆形进度条动画的示例代码
2017/12/26 HTML / CSS
为中国消费者甄选天下优品:网易严选
2016/08/11 全球购物
学校经典推荐信
2013/10/30 职场文书
《蟋蟀的住宅》教学反思
2016/02/17 职场文书
pytorch 运行一段时间后出现GPU OOM的问题
2021/06/02 Python
Springboot使用Spring Data JPA实现数据库操作
2021/06/30 Java/Android