文章地址:https://github.com/leonardoms...


浏览器怎么执行代码?

JS引擎怎么执行代码?

JS引擎会创建一个全局执行上下文【Global Execution Context】,一个全局内存【Global Memory】(又叫做全局作用域【Global Scope】全局变量环境【Global Variable Environment】),如果有函数调用,还需要创建调用栈【Call Stack】局部执行上下文【Local Execution Context】(本地执行上下文)

展开一下。

执行上下文是一个环境,JS代码会在里面被解析和执行。分为全局执行上下文函数执行上下文Eval函数执行上下文

全局执行上下文,引擎默认的,没有在函数中的代码会被放在此上下文。包含两个阶段:创建和执行。全创建阶段会创建一个全局对象(global或window)和this变量,为变量和函数分配内存,hoisting【为声明的变量赋初始值undefined】。

函数执行上下文,当函数被调用时被创建。创建阶段会创建arguments对象,this对象,为变量和函数分配内存,hoisting【为声明的变量赋初始值undefined】

Eval函数执行上下文,无需理解,因为我们几乎用不到。

执行上下文栈,也可以叫做调用栈?

图片描述

通过执行上下文。JS引擎可以解析和运行复杂的代码。

参考资料:
https://www.valentinog.com/bl...
https://tc39.github.io/ecma26...
https://tylermcginnis.com/jav...


xupea
124 声望39 粉丝

致力于前端技术,Scrum敏捷开发和STEAM教育