通过实例了解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 getElementsByClassName函数
Apr 01 Javascript
javascript中AJAX用法实例分析
Jan 30 Javascript
avalon js实现仿google plus图片多张拖动排序附源码下载
Sep 24 Javascript
JavaScript获取客户端IP的方法(新方法)
Mar 11 Javascript
限制文本框只能输入数字||只能是数字和小数点||只能是整数和浮点数
May 27 Javascript
javascirpt实现2个iframe之间传值的方法
Jun 30 Javascript
js插件Jcrop自定义截取图片功能
Oct 14 Javascript
如何能分清npm cnpm npx nvm
Jan 17 Javascript
vue watch关于对象内的属性监听
Apr 22 Javascript
vue使用微信JS-SDK实现分享功能
Aug 23 Javascript
微信小程序如何实现点击图片放大功能
Jan 21 Javascript
js实现移动端轮播图滑动切换
Dec 21 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 和 MYSQL
2006/10/09 PHP
php生成EXCEL的东东
2006/10/09 PHP
php预定义常量
2006/12/25 PHP
ThinkPHP php 框架学习笔记
2009/10/30 PHP
微信支付开发教程(一)微信支付URL配置
2014/05/28 PHP
PHP哈希表实现算法原理解析
2020/12/11 PHP
JavaScript 继承详解(四)
2009/07/13 Javascript
弹出层之1:JQuery.Boxy (一) 使用介绍
2011/10/06 Javascript
简单实例处理url特殊符号&处理(2种方法)
2013/04/02 Javascript
JavaScript 基本概念
2015/01/20 Javascript
JS 作用域与作用域链详解
2015/04/07 Javascript
JS+CSS实现带有碰撞缓冲效果的竖向导航条代码
2015/09/15 Javascript
使用angularjs创建简单表格
2016/01/21 Javascript
JS实现控制文本框的内容
2016/07/10 Javascript
jQuery焦点图轮播效果实现方法
2016/12/19 Javascript
jquery将标签元素的高设为屏幕的百分比
2017/04/19 jQuery
vue时间格式化实例代码
2017/06/13 Javascript
webpack学习笔记之优化缓存、合并、懒加载
2017/08/24 Javascript
小程序云开发之用户注册登录
2019/05/18 Javascript
jQuery 图片查看器插件 Viewer.js用法简单示例
2020/04/04 jQuery
[01:20:30]OG vs LGD 2018国际邀请赛淘汰赛BO3 第四场 8.26
2018/08/30 DOTA
详解Python中time()方法的使用的教程
2015/05/22 Python
python中 logging的使用详解
2017/10/25 Python
Python线性方程组求解运算示例
2018/01/17 Python
Python 实现微信防撤回功能
2019/04/29 Python
Python flask框架实现浏览器点击自定义跳转页面
2020/06/04 Python
Python datetime 如何处理时区信息
2020/09/02 Python
AmazeUI图片轮播效果的示例代码
2020/08/20 HTML / CSS
韩国CJ食品专卖网:CJonmart
2016/09/11 全球购物
印度尼西亚最大的电商平台:Tokopedia(印尼版淘宝)
2017/12/02 全球购物
抽象类和接口的区别
2012/09/19 面试题
学院书画协会部门职责
2013/11/28 职场文书
应届生自荐信范文
2014/02/21 职场文书
表决心的诗句大全
2014/03/11 职场文书
安全生产月演讲稿
2014/05/09 职场文书
销售人员工作自我评价
2014/09/21 职场文书