通过实例了解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 相关文章推荐
JS+XML 省份和城市之间的联动实现代码
Oct 14 Javascript
JS操作select下拉框动态变动(创建/删除/获取)
Jun 02 Javascript
得到form下的所有的input的js代码
Nov 07 Javascript
table行随鼠标移动变色示例
May 07 Javascript
JavaScript中var关键字的使用详解
Aug 14 Javascript
浅谈bootstrap源码分析之tab(选项卡)
Jun 06 Javascript
js中常用的Tab切换效果(推荐)
Aug 30 Javascript
javascript工厂模式和构造函数模式创建对象方法解析
Dec 30 Javascript
ES6入门教程之let和const命令详解
May 17 Javascript
vue 实现复制内容到粘贴板clipboard的方法
Mar 17 Javascript
JS中的JSON对象的定义和取值实现代码
May 09 Javascript
vue实现select下拉显示隐藏功能
Sep 30 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
WINDOWS服务器安装多套PHP的另类解决方案
2006/10/09 PHP
php 执行系统命令的方法
2009/07/07 PHP
php加水印的代码(支持半透明透明打水印,支持png透明背景)
2013/01/17 PHP
PHP防止注入攻击实例分析
2014/11/03 PHP
php实现mysql备份恢复分卷处理的方法
2014/12/26 PHP
php定时执行任务设置详解
2015/02/06 PHP
PHP实现四种基础排序算法的运行时间比较(推荐)
2016/08/11 PHP
PHP有序表查找之二分查找(折半查找)算法示例
2018/02/09 PHP
Laravel5框架添加自定义辅助函数的方法
2018/08/01 PHP
JavaScript获取onclick、onchange等事件值的代码
2013/07/22 Javascript
js中arguments,caller,callee,apply的用法小结
2014/01/28 Javascript
JS触发服务器控件的单击事件(详解)
2016/08/06 Javascript
微信小程序  网络请求API详解
2016/10/25 Javascript
通过一个简单的例子学会vuex与模块化
2017/11/22 Javascript
Vue中 key keep-alive的实现原理
2018/09/18 Javascript
解决vue A对象赋值给B对象,修改B属性会影响到A的问题
2018/09/25 Javascript
Vue开发之封装上传文件组件与用法示例
2019/04/25 Javascript
Python随机生成一个6位的验证码代码分享
2015/03/24 Python
Python实现的RSS阅读器实例
2015/07/25 Python
Python编程中归并排序算法的实现步骤详解
2016/05/04 Python
详解python3中tkinter知识点
2018/06/21 Python
详解Selenium+PhantomJS+python简单实现爬虫的功能
2019/07/14 Python
TensorFlow Saver:保存和读取模型参数.ckpt实例
2020/02/10 Python
Python requests.post方法中data与json参数区别详解
2020/04/30 Python
解决python调用自己文件函数/执行函数找不到包问题
2020/06/01 Python
Python代码需要缩进吗
2020/07/01 Python
python中watchdog文件监控与检测上传功能
2020/10/30 Python
HTML5 canvas实现移动端上传头像拖拽裁剪效果
2016/03/14 HTML / CSS
ProBikeKit德国:在线公路自行车专家
2018/06/03 全球购物
澳大利亚珠宝商:Shiels
2019/10/06 全球购物
最新的咖啡店创业计划书
2013/12/30 职场文书
高一英语教学反思
2014/01/22 职场文书
工作自我评价怎么写
2014/01/29 职场文书
旅游管理毕业生自荐信范文
2014/03/19 职场文书
电台广播稿范文
2015/08/19 职场文书
python 解决微分方程的操作(数值解法)
2021/05/26 Python