关于一个js连续赋值问题之我见(词略穷,见谅)
前几天在搜索面试题时发现了这么一段代码,执行完后感觉完全不与所想的一样
1 var a = { 2 n : 1 3 }; 4 var b = a; 5 a.x = a = {n : 2}; 6 console.log(a.x); 7 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后边,这条赋值到底执行了什么就一目了然了.
这是语句执行时打印的log
先触发了一次get,然后触发了一次set.
本人猜想,该条语句执行的顺序为,先将左边变量取出,然后执行赋值.(在执行该条语句前,先将对象引用取出,然后从右到左执行赋值)
上图来自 http://snandy.iteye.com/blog/785445
部分参考资料:
http://blog.csdn.net/kittyjie/article/details/8242523
转载于:https://www.cnblogs.com/jiasm/p/4629381.html
关于一个js连续赋值问题之我见(词略穷,见谅)相关推荐
- js逆向之有道词js加密解析
js逆向之有道词js加密解析 文章目录 js逆向之有道词js加密解析 需要用到的工具: 下面就介绍一下3种看js加密的代码方法: 第一种方法: 第二种: 第三种: 下面我们来了解我们要用什么解密md5 ...
- pdf.js实现多个不同词的高亮显示
这里我是没有进行压缩过的版本进行修改,该版本目录分析参考:https://blog.csdn.net/a973685825/article/details/81285288 目标:实现多个词的高亮显示 ...
- html如何打包压缩,所有css打包压缩到一个js里面
所有css打包压缩到一个js里面 打包css文件的意义:最终把css文件压缩到最终生成的js文件里,页面不需要再加载css文件,并且是压缩过的 打包css文件,安装style-loader css-l ...
- 两个html文件互相访问变量,访问一个js文件的变量上的HTML文件
我已经在那里我宣布,我想在一个脚本在HTML中使用一个变量js文件访问一个js文件的变量上的HTML文件 js文件(controllerB.js) var modalArticles = []; $( ...
- 判断一个js对象,是否具有某个属性
一个对象,想必我们关注的最多的应该是它上面的属性有哪些吧.那么,怎么判断一个对象是否具有某个属性呢? 1 /*下面是一个对比,看看在判断是否包括一个键上面,Object结构和Set结构的写法不同.*/ ...
- DOM对象本身也是一个js对象,所以严格来说,并不是操作这个对象慢,而是说操作了这个对象后,会触发一些浏览器行为(转)...
一直都听说DOM很慢,要尽量少的去操作DOM,于是就想进一步去探究下为什么大家都会这样说,在网上学习了一些资料,这边整理出来. 首先,DOM对象本身也是一个js对象,所以严格来说,并不是操作这个对象慢 ...
- 引用的一个JS组件,JCombo 0.9
引用:http://www.cnblogs.com/eicesoft/archive/2007/09/18/897287.html 自己写的一个JS组件,JCombo 0.9 自己写的一个JS组件,J ...
- 自己封装的一个js方法用于获取显示的星期和日期时间
自己封装的一个js方法用于获取显示的星期和日期时间 /*** 获取用于显示的星期和日期时间* @param date* @returns {string}*/ function getWeek(dat ...
- JavaScript:在一个JS文件中引入另外的一个JS文件
前因 这个问题是因为有很多的Html文件(含有公共的JS文件),可能都需要使用同一个JS方法,但是这个JS方法需要依赖其他JS文件的支持,这时候我们不能每一个Html都要写导入JS的标签,我们需要使用 ...
最新文章
- java异常处理机制详解
- 骨骼捏脸功能的实现方法
- 用sqlSessionFactoryBeanName而不用sqlSessionFactory的原因
- Union-Find 并查集算法详解
- 怎么让电脑屏幕一直亮着_电脑屏幕总是闪烁?试试这个方法
- mysql教程qt linux_一步步学Qt,第四天-Linux 下mysql数据库链接
- 计算机图形学在线作业,电子科大16秋《计算机图形学》在线作业3答案
- 如何用python制作动画_如何基于Python Matplotlib实现网格动画
- 20、Tabs底部导航栏
- 一个LinkedList的简单体现(用户缓存手机通话记录)
- mysql-日常命令使用汇总
- 多线程之CountDownLatch工具类
- c语言编程电影院票务系统,C++课程设计----电影院售票系统
- 计算机的网络测速,网速知识 - 专业网速测试, 宽带提速, 游戏测速, 直播测速, 5G测速, 物联网监测 - SpeedTest.cn...
- 局部特征——角点检测(Harris,Shi-Tomasi)
- 易语言文本比较特征码
- java神雕侠侣1古墓情缘游戏攻略_神雕侠侣古墓派后期攻略讲解
- 新手小白纠结要做角色建模还是场景建模比较好?
- windows系统重装
- 苹果如何做ASO优化?优化的主要思路有哪些?
热门文章
- 《LeetCode力扣练习》剑指 Offer 29. 顺时针打印矩阵 Java
- java json 内部类_使用Fastjson解析内部类的一个小问题
- bootstrape实战案例_第二百五十二节,Bootstrap项目实战-首页
- php 带下划线的函数,[宜配屋]听图阁
- android n进入分屏代码分析_智慧分屏为“何物”?华为MatePad Pro解锁便捷又高效的新姿势...
- sql 增加自增列 耗时长_SQLServer为已有数据的表添加一个自增列
- 并行处理的类型与CPU/GPU架构
- php 商场收银收费系统,使用的策略模式
- Android 系统开发_四大组件篇 -- Service 解析(用法)
- Linux内核调试 - 一般人儿我都不告诉他(一)【转】