前言
原文来自于:浏览器工作原理与实践:08 | 调用栈:为什么JavaScript代码会出现栈溢出?
本文属于个人读书笔记总结,好记性不如烂笔头,学到的东西通过自己的总结后记录下来的才算是自己的知识。
上一篇:读书笔记|JavaScript中的变量提升、编译阶段和执行阶段
正文
一、三种执行上下文
当一段JS代码被执行时,JavaScript引擎会先对其进行编译,并创建执行上下文。
JS中有三种执行上下文:
- 全局执行上下文:执行全局代码时,会编译全局代码并创建全局执行上下文,整个页面的生存周期内,全局执行上下文只有一份。
- 函数执行上下文:调用一个函数时,函数体内的代码会被编译,并创建函数执行上下文。函数执行结束之后,创建的函数执行上下文会被销毁。
- 当使用eval函数时,eval的代码也会被编译,并创建执行上下文。
二、函数调用过程中的执行上下文
var a = 2
function add(){
var b = 10
return a+b
}
add()
编译阶段