文章地址: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...
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。