通过实例了解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 相关文章推荐
JavaScript QueryString解析类代码
Jan 17 Javascript
jQuery 操作option的实现代码
Mar 03 Javascript
文本框输入时 实现自动提示(像百度、google一样)
Apr 05 Javascript
JS中dom0级事件和dom2级事件的区别介绍
May 05 Javascript
jqGrid用法汇总(全经典)
Jun 28 Javascript
vue基于Element构建自定义树的示例代码
Sep 19 Javascript
vue favicon设置以及动态修改favicon的方法
Dec 21 Javascript
详解微信小程序胶囊按钮返回|首页自定义导航栏功能
Jun 14 Javascript
微信小程序Echarts图表组件使用方法详解
Jun 25 Javascript
Vue数据驱动表单渲染,轻松搞定form表单
Jul 19 Javascript
Vue 微信端扫描二维码苹果端却只能保存图片问题(解决方法)
Jan 19 Javascript
ES5新增数组的实现方法
May 12 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
laravel学习教程之关联模型
2016/07/30 PHP
PHP-X系列教程之内置函数的使用示例
2017/10/16 PHP
php写入文件不覆盖的实例讲解
2019/09/17 PHP
Laravel6.0.4中将添加计划任务事件的方法步骤
2019/10/15 PHP
PHP const定义常量及global定义全局常量实例解析
2020/05/28 PHP
PHPstorm启用自动换行的方法详解(IDE)
2020/09/17 PHP
DHTML Slide Show script图片轮换
2008/03/03 Javascript
用函数式编程技术编写优美的 JavaScript_ibm
2008/05/16 Javascript
JavaScript的作用域和块级作用域概念理解
2014/09/21 Javascript
javascript动态设置样式style实例分析
2015/05/13 Javascript
浅谈js里面的InttoStr和StrtoInt
2016/06/14 Javascript
微信小程序 数据访问实例详解
2016/10/08 Javascript
简单实现AngularJS轮播图效果
2020/04/10 Javascript
Vue2.0表单校验组件vee-validate的使用详解
2017/05/02 Javascript
jQuery获取table表中的td标签(实例讲解)
2017/07/28 jQuery
Echarts基本用法_动力节点Java学院整理
2017/08/11 Javascript
jQuery实现获取table中鼠标click点击位置行号与列号的方法
2017/10/09 jQuery
在react中使用vuex的示例代码
2018/07/30 Javascript
JavaScript实现轮播图片完整代码
2020/03/07 Javascript
js+css实现全屏侧边栏
2020/06/16 Javascript
[01:55]2014DOTA2国际邀请赛快报:国土生病 紧急去医院治疗
2014/07/10 DOTA
Python文件处理
2016/02/29 Python
python如何修改装饰器中参数
2018/03/20 Python
python字符串与url编码的转换实例
2018/05/10 Python
解决pandas中读取中文名称的csv文件报错的问题
2018/07/04 Python
python+selenium 鼠标事件操作方法
2019/08/24 Python
wxPython多个窗口的基本结构
2019/11/19 Python
简单了解Django ORM常用字段类型及参数配置
2020/01/07 Python
python给图像加上mask,并提取mask区域实例
2020/01/19 Python
JD Sports瑞典:英国领先的运动时尚商店
2018/01/28 全球购物
采购意向书范本
2014/03/31 职场文书
《音乐之都维也纳》教学反思
2014/04/16 职场文书
汽车转让协议书
2015/01/29 职场文书
师范生教育见习总结
2015/06/23 职场文书
2019最新激励员工口号大全!
2019/06/28 职场文书
Python如何使用logging为Flask增加logid
2021/03/30 Python