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知识库 -> JavaScript 的执行过程 之 执行上下文 -> 正文阅读

[JavaScript知识库]JavaScript 的执行过程 之 执行上下文

?

前言

JavaScript 执行的过程涉及到了大部分的语言核心逻辑,了解执行上下文(Execution Context),对 JS 的深入理解和开发都是极为重要的。

在这里插入图片描述

简介

JS是一种解释性语言,解释一行执行一行。执行上下文是对 JS 代码进行解释、执行、回收。由此涉及的知识点包括 Event Loop(事件循环)、堆(heap)栈(stack)、GC(JS 的垃圾回收机制)、任务队列(宏任务 macrotask、微任务 microtask)、变量提升、明确作用域、作用域链、this 的指向、JS线程和GUI线程的执行机制。

以上及相关的点,这里就不一一展开了。所以执行上下文是了解 JS 核心的第一步,也是 JS 语言中的 “主线任务”。

正文

“把大象放进冰箱需要几步?” 对,是三步:

一、创建上下文(解释阶段)

Tip:如果变量名与函数名相同,变量会被函数覆盖,在执行过程的时候,变量的赋值会覆盖掉这个问题。所以,函数名和变量名最好不要重复

1、全局上下文:
一个程序中只能有一个全局上下文,并将 this 指向全局

2、函数上下文:
函数被调用时创建。每个函数都有自己的上下文,函数执行上下文中会多出 this arguments 和函数的参数。

3、eval 函数上下文:
MDN不建议使用的函数,这里不讨论

二、执行上下文(执行阶段)

执行变量赋值、代码执行

Event Loop 的整个过程:
涉及执行栈(看做水桶,先进后出)、任务队列(看做排队,先进先出。任务队列分为微任务队列、宏任务队列)

V8 引擎的编译机制:
代码 -> AST语法树 -> 字节码 -> 机器码 -> 执行;这里面还涉及词法分析、语法分析、热点函数、反编译等机制

在执行栈中的任务被执行后,会被弹出,等待回收机制的判断,释放内存。

三、回收上下文(垃圾回收阶段)

任务被之后弹出执行栈,回收机制会检查该变量是否有被引用或标记如没有,出栈等待虚拟机回收执行上下文。全局上下文只有唯一的一个,它最早进栈,浏览器关闭时出栈

例:

1var a = [123]; 整个执行过程中没有被使用,也没有被置空,该内存一直保持引用数量为1,不会进入回收机制。所以,不要声明未使用的变量,很多语法检查工具中也会有该项的检测、提示。

2、如果形成闭包,闭包对外部变量的引用得不到释放,也会保持引用,不进入回收

最后

后面会按照执行上下文的顺序分享每一个涉及到的点,这里就不展开了。如有不对,欢迎指出!文章来自微信公众号:前端学海

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

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