通过实例了解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 index()方法 获取相应元素索引值
Oct 12 Javascript
jquery 实现二级/三级/多级联动菜单的思路及代码
Apr 08 Javascript
简单的两种Extjs formpanel加载数据的方式
Nov 09 Javascript
浅谈JavaScript中Date(日期对象),Math对象
Feb 05 Javascript
jQuery插件制作之参数用法实例分析
Jun 01 Javascript
Bootstrap3学习笔记(二)之排版
May 20 Javascript
用js实现简单算法的实例代码
Sep 24 Javascript
AngularJS实现单一页面内设置跳转路由的方法
Jun 28 Javascript
es6+angular1.X+webpack 实现按路由功能打包项目的示例
Aug 16 Javascript
原生js中ajax访问的实例详解
Sep 19 Javascript
记录一篇关于redux-saga的基本使用过程
Aug 18 Javascript
vue实现微信分享链接添加动态参数的方法
Apr 29 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/09/13 PHP
php输出反斜杠的实例方法
2019/09/19 PHP
laravel使用数据库测试注意事项
2020/04/10 PHP
用jQuery实现的智能隐藏、滑动效果的返回顶部代码
2014/03/18 Javascript
jquery使用slideDown实现模块缓慢拉出效果的方法
2015/03/27 Javascript
jQuery插件实现静态HTML验证码校验
2015/11/06 Javascript
js实现仿qq消息的弹出窗效果
2016/01/06 Javascript
javascript中this关键字详解
2016/12/12 Javascript
angular select 默认值设置方法
2017/06/23 Javascript
利用JQUERY实现多个AJAX请求等待的实例
2017/12/14 jQuery
Vue中插入HTML代码的方法
2018/09/21 Javascript
vue中使用better-scroll实现滑动效果及注意事项
2018/11/15 Javascript
express启用https使用小记
2019/05/21 Javascript
Vue中import from的来源及省略后缀与加载文件夹问题
2020/02/09 Javascript
uniapp实现可以左右滑动导航栏
2020/10/21 Javascript
[02:06]DOTA2英雄基础教程 暗影萨满
2013/12/16 DOTA
Python Tkinter GUI编程入门介绍
2015/03/10 Python
python实现的简单窗口倒计时界面实例
2015/05/05 Python
python抽象基类用法实例分析
2015/06/04 Python
Python简单实现的代理服务器端口映射功能示例
2018/04/08 Python
python中的文件打开与关闭操作命令介绍
2018/04/26 Python
Python opencv实现人眼/人脸识别以及实时打码处理
2019/04/29 Python
Django中的FBV和CBV用法详解
2019/09/15 Python
Python迭代器模块itertools使用原理解析
2019/12/11 Python
Python zip函数打包元素实例解析
2019/12/11 Python
python GUI库图形界面开发之PyQt5布局控件QVBoxLayout详细使用方法与实例
2020/03/06 Python
Anaconda的安装及其环境变量的配置详解
2020/04/22 Python
Python基于Serializer实现字段验证及序列化
2020/11/04 Python
美国零售商店:Blue&Cream
2017/04/07 全球购物
墨西哥网上超市:Superama
2018/07/10 全球购物
社会实践自我鉴定
2013/11/07 职场文书
电厂职工自我鉴定
2014/02/20 职场文书
增员口号大全
2014/06/18 职场文书
党支部遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
2015年煤矿安全工作总结
2015/05/23 职场文书
2015年暑期实践报告范文
2015/07/13 职场文书