通过实例了解JS 连续赋值


Posted in Javascript onSeptember 24, 2019

这篇文章主要介绍了通过实例了解JS 连续赋值,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

问题:

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

通过实例了解JS 连续赋值

根据js引擎语法解析,会先去从左到右寻找有没有未声明的变量,如果有就把该变量提升至作用域顶部并声明该变量。那么恭喜js引擎他找到a.x这个属性没有声明,那么他会在{n: 1}这个内存区声明一个x属性等待赋值!

语法解析完成后,开始进行运算(ps:赋值运算),首先将a变量的指针指向了一个新的内存区{n: 2},那么a变量脱离了对内存区{n: 1}的引用关系。

但是此时{n:1 }这个内存区并没有被GC回收因为b变量的指针依然指向它。并且因为之前就声明了x属性所以该内存区
增加了X属性。那么X属性指向哪儿呢?a.x = a = {n: 2}它的返回值就是{n: 2}的内存区。

通过实例了解JS 连续赋值

那么根据图上可得:

a.x 不存在,故: => undefined

b.x => {n: 2}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery实现树形二级菜单实例代码
Nov 20 Javascript
Javascript 遍历页面text控件详解
Jan 06 Javascript
Js获取下拉框选定项的值和文本的实现代码
Feb 26 Javascript
jquery的attr方法禁用表单元素禁用输入内容
Jun 23 Javascript
jQuery中next方法用法实例
Apr 24 Javascript
JS组件Bootstrap dropdown组件扩展hover事件
Apr 17 Javascript
js实现图片左右滚动效果
Feb 27 Javascript
JS实现json的序列化和反序列化功能示例
Jun 13 Javascript
vue.js分页中单击页码更换页面内容的方法(配合spring springmvc)
Feb 10 Javascript
微信小程序实现星级评分和展示
Jul 05 Javascript
vue实现输入框的模糊查询的示例代码(节流函数的应用场景)
Sep 01 Javascript
Vue如何循环提取对象数组中的值
Nov 18 Vue.js
layui--select使用以及下拉框实现键盘选择的例子
Sep 24 #Javascript
JS防抖和节流实例解析
Sep 24 #Javascript
vue.js实现图书管理功能
Sep 24 #Javascript
layui table单元格事件修改值的方法
Sep 24 #Javascript
Javascript Dom元素获取和添加详解
Sep 24 #Javascript
微信小程序全局变量的设置、使用、修改过程解析
Sep 24 #Javascript
layui监听select变化,以及设置radio选中的方法
Sep 24 #Javascript
You might like
PHPLog php 程序调试追踪工具
2009/09/09 PHP
PHP中date与gmdate的区别及默认时区设置
2014/05/12 PHP
phpmyadmin出现Cannot start session without errors问题解决方法
2014/08/14 PHP
Yii使用DeleteAll连表删除出现报错问题的解决方法
2016/07/14 PHP
php 调用百度sms来发送短信的实现示例
2018/11/02 PHP
JavaScript this 深入理解
2009/07/30 Javascript
深入分析js中的constructor和prototype
2012/04/07 Javascript
简单谈谈jQuery(function(){})与(function(){})(jQuery)
2014/12/19 Javascript
jquery地址栏链接与a标签链接匹配之特效代码总结
2015/08/24 Javascript
jquery+json实现数据二级联动的方法
2015/11/28 Javascript
JS操作xml对象转换为Json对象示例
2017/03/25 Javascript
nodejs6下使用koa2框架实例
2017/05/18 NodeJs
微信小程序实现拼图小游戏
2020/10/22 Javascript
[07:31]DOTA2卡尔工作室 英雄介绍主宰篇
2013/06/25 DOTA
[04:32]DOTA2著名解说配音敌法师 现场专访海涛怒切假腿
2013/12/20 DOTA
[02:42]完美大师赛主赛事淘汰赛第三日观众采访
2017/11/25 DOTA
python调用fortran模块
2016/04/08 Python
Python for循环中的陷阱详解
2018/07/13 Python
python使用response.read()接收json数据的实例
2018/12/19 Python
Python实现二维曲线拟合的方法
2018/12/29 Python
利用python实现对web服务器的目录探测的方法
2019/02/26 Python
详解pyppeteer(python版puppeteer)基本使用
2019/06/12 Python
pytorch torch.expand和torch.repeat的区别详解
2019/11/05 Python
python单元测试框架pytest的使用示例
2020/10/07 Python
解决margin 外边距合并问题
2019/07/03 HTML / CSS
阿拉伯世界最大的电子卖场:Souq埃及
2016/08/01 全球购物
加拿大时尚少女服装品牌:Garage
2016/10/10 全球购物
Lentiamo比利时:便宜的隐形眼镜
2020/02/14 全球购物
计算机学生求职信范文
2014/01/30 职场文书
活动策划求职信模板
2014/04/21 职场文书
保研推荐信
2014/05/09 职场文书
失职检讨书大全
2015/01/26 职场文书
团员个人总结
2015/02/26 职场文书
护士业务学习心得体会
2016/01/25 职场文书
优秀家长事迹材料(2016推荐版)
2016/02/29 职场文书
Nginx开启Brotli压缩算法实现过程详解
2021/03/31 Servers