js 连续赋值的简单实现


Posted in Javascript onJune 13, 2016

无意中网上发现的这个问题,预想的结果和真实的结果大相径庭。

var a={n:1}
var b=a;
a.x=a={n:2}
console.log(a.x); 
console.log(b.x);
undefined
Object{n:2}

要是拆开来看,结果就是我所想的那样

var a={n:1}
var b=a;
a={n:2};
a.x={n:2}
console.log(a.x);//Object{n:2}console.log(b.x);//undefined

分析:

a.x=a={n:2}

js的赋值运算是右结合的,上面等同于a.x=(a={n:2})

js的求值运算是从左到右的(PS:和同事讨论,他说是从左到右,我认为是从右到左,最后发现是我错了)

1)a.x=(括号内的最终结果)

   查找a的x属性不存在后在a指向的对象中添加一个属性x,这个x属性要把一个结果赋给它,那好吧,我等着结果

js 连续赋值的简单实现

 

2)因为是要获得括号内的结果,那么a.x就一直等着括号内给他返回结果,所以开始求值a={n:2}得到结果后返回给这个新属性x

js 连续赋值的简单实现

3)回到括号内的a={n:2},a发生指向改变了

js 连续赋值的简单实现

以上这篇js 连续赋值的简单实现就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
基于Jquery的将DropDownlist的选中值赋给label的实现代码
May 06 Javascript
Extjs中ComboBox加载并赋初值的实现方法
Mar 22 Javascript
JS 对象属性相关(检查属性、枚举属性等)
Apr 05 Javascript
在JavaScript中操作时间之getYear()方法的使用教程
Jun 11 Javascript
JavaScript时间操作之年月日星期级联操作
Jan 15 Javascript
jQuery基于排序功能实现上移、下移的方法
Nov 26 Javascript
js拖拽功能实现代码解析
Nov 28 Javascript
laravel5.4+vue+element简单搭建的示例代码
Aug 29 Javascript
vue中更改数组中属性,在页面中不生效的解决方法
Oct 30 Javascript
vue-element-admin 菜单标签失效的解决方式
Nov 12 Javascript
jQuery实现鼠标放置名字上显示详细内容气泡提示框效果的方法分析
Apr 04 jQuery
vue项目中自定义video视频控制条的实现代码
Apr 26 Javascript
全面解析Bootstrap中Carousel轮播的使用方法
Jun 13 #Javascript
全面解析Bootstrap中tooltip、popover的使用方法
Jun 13 #Javascript
JavaScript遍历求解数独问题的主要思路小结
Jun 12 #Javascript
Node.js环境下编写爬虫爬取维基百科内容的实例分享
Jun 12 #Javascript
JavaScript解八皇后问题的方法总结
Jun 12 #Javascript
jQuery遍历json的方法(推荐)
Jun 12 #Javascript
jQuery移动端图片上传组件
Jun 12 #Javascript
You might like
php 调试利器debug_print_backtrace()
2012/07/23 PHP
php格式化时间戳显示友好的时间实现思路及代码
2014/10/23 PHP
PHP实现的构造sql语句类实例
2016/02/03 PHP
DEDE实现转跳属性文档在模板上调用出转跳地址
2016/11/04 PHP
ThinkPHP+EasyUI之ComboTree中的会计科目树形菜单实现方法
2017/06/09 PHP
jQuery(非HTML5)可编辑表格实现代码
2012/12/11 Javascript
Extjs单独定义各组件的实例代码
2013/06/25 Javascript
JavaScript插件化开发教程 (三)
2015/01/27 Javascript
跟我学习javascript的全局变量
2015/11/16 Javascript
jQuery 1.9.1源码分析系列(十四)之常用jQuery工具
2015/12/02 Javascript
Bootstrap前端开发案例一
2016/06/17 Javascript
JS多文件上传的实例代码
2017/01/11 Javascript
AngularJS路由切换实现方法分析
2017/03/17 Javascript
详解Vuex中mapState的具体用法
2017/09/28 Javascript
JS Testing Properties 判断属性是否在对象里的方法
2017/10/01 Javascript
angular学习之动态创建表单的方法
2018/12/07 Javascript
详解VUE前端按钮权限控制
2019/04/26 Javascript
js实现多张图片每隔一秒切换一张图片
2019/07/29 Javascript
微信小程序 flexbox layout快速实现基本布局的解决方案
2020/03/24 Javascript
Js利用正则表达式去除字符串的中括号
2020/11/23 Javascript
JavaScript实现简单动态表格
2020/12/02 Javascript
[01:03:38]2014 DOTA2国际邀请赛中国区预选赛5.21 CNB VS CIS
2014/05/22 DOTA
[44:47]Ti4 循环赛第三日 iG vs NaVi
2014/07/12 DOTA
[01:21:36]CHAOS vs Alliacne 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
Python利用turtle库绘制彩虹代码示例
2017/12/20 Python
Django 拆分model和view的实现方法
2019/08/16 Python
python机器学习实现决策树
2019/11/11 Python
详解django使用include无法跳转的解决方法
2020/03/19 Python
Python连接HDFS实现文件上传下载及Pandas转换文本文件到CSV操作
2020/06/06 Python
研究生导师推荐信
2014/09/06 职场文书
2015年社区妇联工作总结
2015/04/21 职场文书
民事纠纷协议书
2016/03/23 职场文书
面试必问:圣杯布局和双飞翼布局的区别
2021/05/13 HTML / CSS
浅析MongoDB之安全认证
2021/06/26 MongoDB
Python 居然可以在 Excel 中画画你知道吗
2022/02/15 Python
python游戏开发之pygame实现接球小游戏
2022/04/22 Python