通过实例了解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 相关文章推荐
一些易混淆且不常用的属性,希望有用
Jan 29 Javascript
js 图片随机不定向浮动的实现代码
Jul 02 Javascript
jquery改变tr背景色的示例代码
Dec 28 Javascript
通过JS判断联网类型和连接状态的实现代码
Apr 01 Javascript
AngualrJS中每次$http请求时的一个遮罩层Directive
Jan 26 Javascript
使用BootStrap进行轮播图的制作
Jan 06 Javascript
js实现九宫格拼图小游戏
Feb 13 Javascript
如何在 JavaScript 中更好地利用数组
Sep 27 Javascript
教你如何编写Vue.js的单元测试的方法
Oct 17 Javascript
vue 地区选择器v-distpicker的常用功能
Jul 23 Javascript
JavaScript 双向链表操作实例分析【创建、增加、查找、删除等】
Apr 28 Javascript
浅谈实现在线预览PDF的几种解决办法
Aug 10 Javascript
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
PHP中几个常用的魔术常量
2012/02/23 PHP
用mysql_fetch_array()获取当前行数据的方法详解
2013/06/05 PHP
THINKPHP2.0到3.0有哪些改进之处
2015/01/04 PHP
PHP常用函数之根据生日计算年龄功能示例
2019/10/21 PHP
Yii实现微信公众号场景二维码的方法实例
2020/08/30 PHP
Jquery操作Select 简单方便 一个js插件搞定
2009/11/12 Javascript
JavaScript 数组详解
2013/10/10 Javascript
JavaScript控制listbox列表框的项目上下移动的方法
2015/03/18 Javascript
Kindeditor在线文本编辑器如何过滤HTML
2016/04/14 Javascript
基于javascript实现表格的简单操作
2016/05/21 Javascript
简单掌握JavaScript中const声明常量与变量的用法
2016/05/21 Javascript
微信小程序 用户数据解密详细介绍
2017/01/09 Javascript
vuejs指令详解
2017/02/07 Javascript
Vue Prop属性功能与用法实例详解
2019/02/23 Javascript
js通过循环多张图片实现动画效果
2019/12/19 Javascript
JavaScript中的this原理及6种常见使用场景详解
2020/02/14 Javascript
JavaScript中break、continue和return的用法区别实例分析
2020/03/02 Javascript
[05:05]第三天的dota2
2013/07/29 DOTA
[50:17]Newbee vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
Python XML RPC服务器端和客户端实例
2014/11/22 Python
Python编程实现数学运算求一元二次方程的实根算法示例
2017/04/02 Python
python实现图片批量压缩程序
2018/07/23 Python
Python使用分布式锁的代码演示示例
2018/07/30 Python
Python3内置模块之json编解码方法小结【推荐】
2020/12/09 Python
三个python爬虫项目实例代码
2019/12/28 Python
Python中的 ansible 动态Inventory 脚本
2020/01/19 Python
Python 实现网课实时监控自动签到、打卡功能
2020/03/12 Python
Python制作数据预测集成工具(值得收藏)
2020/08/21 Python
追悼会上的答谢词
2014/01/10 职场文书
《诺贝尔》教学反思
2014/02/17 职场文书
元旦红领巾广播稿
2014/02/19 职场文书
计划生育汇报材料
2014/12/26 职场文书
投标承诺函格式
2015/01/21 职场文书
张思德观后感
2015/06/09 职场文书
SQL Server——索引+基于单表的数据插入与简单查询【1】
2021/04/05 SQL Server
MongoDB修改oplog大小的四种方法
2022/04/11 MongoDB