| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> JavaScript知识库 -> 【JavaScript修炼】变量对象与作用域链 -> 正文阅读 |
|
[JavaScript知识库]【JavaScript修炼】变量对象与作用域链 |
前言在上一篇【修炼JavaScript】javascript中的作用域和执行上下文中,我们讲到了JavaScript中的执行上下文的管理方式,即利用执行上下文栈进行管理。 JavaScript的执行上下文中包含3个重要的属性:
今天我们就来讲讲其中的变量对象和作用域链,读完本文你可以知道和理解如下知识点:
变量对象变量对象是与执行上下文相关的数据作用域,存储了和上下文相关的变量和函数声明。 不同的执行上下文(全局,函数,eval)的变量对象有所不同,这里主要讲解:
全局对象在W3School中有对全局对象的描述如下:
看不太懂?我再来总结一下:
函数活动对象函数的变量对象用活动对象(activation object , AO)来表示,其实变量对象和活动对象是同一个东西,知识变量对象是规范上或者引擎实现上的,它其中的属性和方法外部无法访问,而只有当进入函数执行上下文将变量对象激活成活动对象时,它上面的方法和属性才可以访问。 之前在【修炼JavaScript】javascript中的作用域和执行上下文中讲到:在遇到函数调用时会进行两步:
创建执行上下文时会将该函数上下文压入执行上下文栈中
接下来进入代码执行阶段,该阶段具体来说又分为2步: 用一个图来表示代码执行时遇到函数调用的步骤: 函数活动对象在进入执行上下文时利用函数的arguments对象进行初始化,最终活动对象会包括:
举一个例子:
进入函数执行上下文,在代码执行前AO长这样:
在代码执行阶段会根据代码给AO的属性赋值,代码执行之后长这样
作用域链在之前在【修炼JavaScript】javascript中的作用域和执行上下文中我们讲过,函数的作用域是在定义函数时就确定的,具体来说其反映在函数的内部属性[[Scopes]]上。 在函数创建时,会将所有父变量对象添加到[[Scopes]]中,但是[[Scopes]]并不是完整的作用域链,此时作用域链还没有确定,它只是作用域链的一部分。 在函数调用时,进入执行上下文激活函数创建AO后,会复制[[Scopes]]创建作用域链,并把AO添加到其最前端,此时作用域链才真正创建完成。也就是说作用域链是在执行代码前的准备阶段确定的。 这么说可能还是不太清楚,看个例子:
1??在
2??代码执行,遇到函数调用
3??进入执行上下文,开始准备阶段第一步:复制[[Scopes]]创建作用域链
4??准备阶段第二步:用arguments创建活动对象,初始化活动对象,加入形参,变量声明和函数声明。
5??准备阶段第三步:将AO添加到作用域链顶端
6??准备工作完成,开始执行代码,修改AO的属性
7??查找到
总结总结就来一张自己画的图,搞懂这张图并能自己画出来就差不多了。 |
|
JavaScript知识库 最新文章 |
ES6的相关知识点 |
react 函数式组件 & react其他一些总结 |
Vue基础超详细 |
前端JS也可以连点成线(Vue中运用 AntVG6) |
Vue事件处理的基本使用 |
Vue后台项目的记录 (一) |
前后端分离vue跨域,devServer配置proxy代理 |
TypeScript |
初识vuex |
vue项目安装包指令收集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 19:49:09- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |