IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> JS中执行上下文的理解 -> 正文阅读

[JavaScript知识库]JS中执行上下文的理解

目录

执行上下文是什么

执行上下文的分类

生命周期

执行栈


执行上下文是什么

执行上下文是对JS代码执行环境的抽象概念,即只要有JS代码在运行,则一定是在执行上下文中进行运行。

执行上下文的分类

  • 全局执行上下文:即浏览器中的全局对象是window对象,this指向的是这个全局。即有一个
  • 函数执行上下文:当函数被调用的时候被创建,每次调用函数会创建一个新的执行上下文。即有无数个
  • Eval函数执行上下文:是eval函数中的代码,很少使用

注解:调用函数创建的新的上下文会有一个私有作用域,函数内部声明的任何变量都不能在这个函数作用外进行访问,只能在函数内部进行访问

生命周期

执行上下文的生命周期包括阶段: 创建阶段、执行阶段、回收阶段

创建阶段

  1. 确定this的值(This Binding)-- this的值是在执行的时候确认,定义的时候不能确认
  2. 语法环境(LexicalEnvironment)组件被创建 -- 两个组成:全局环境(this指的是全局对象)、函数环境
  3. 变量环境(VariableEnvironment)组件被创建

变量提升的主要原因:--创建阶段时var生命的变量赋值undefined值

创建阶段对于var、let、const的赋值状态: let和const定义变量在创建阶段没有被赋值,var生命的变量在从创建阶段被赋值undefined。 -- 原因:在创建阶段,代码处扫描变量和函数声明,然后将函数声明存储在环境中,单变量会被初始化成undefined(var声明时)和保持初始状态(let、const声明时)

执行阶段

  1. 执行变量赋值
  2. 代码执行

注解:当JS引擎源代码中找不到变量的值,将分配undefined值

回收阶段

  1. 执行上下文出栈
  2. 等待虚拟机回收上下文

执行栈

执行栈,也为调用栈,先进先出结构,用于存储代码执行期间创建的所有执行上下文

执行顺序:

  1. JS引擎开始执行第一行脚本代码,先创建一个全局执行上下文之后将它压倒执行栈中。
  2. 每当引擎遇到一个函数时,会创建一个函数执行上下文,然后将这个和执行上下文压到执行栈中。
  3. 引擎会执行位于执行栈栈顶的执行上下文(一般是函数执行上下文),该函数执行结束后,对应的执行上下文会被弹出,然后控制流程到达执行栈的下一个执行上下文

转化成图的形式

流程:

  • 创建全局上下文请压入执行栈
  • first函数被调用,创建函数执行上下文并压入栈
  • 执行first函数过程遇到second函数,再创建一个函数执行上下文并压入栈
  • second函数执行完毕,对应的函数执行上下文被推出执行栈,执行下一个执行上下文first函数
  • first函数执行完毕,对应的函数执行上下文也被推出栈中,然后执行全局上下文
  • 所有代码执行完毕,全局上下文也会被推出栈中,程序结束

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-04-18 17:32:12  更:2022-04-18 17:33:19 
 
开发: 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/24 3:17:50-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码