栈:一种数据结构,遵循先进后出(FILO,First In Last Out)的原则,区分于队列先进后出(FIFO,First In Last Out)不同。
JS中所有需要执行的代码,比如函数调用、原始值的加减乘除等等,都会被push(在栈尾推入)进栈。
JavaScript引擎会以栈的方式来处理的“place”,这个栈就叫call stack。
JS在一开始运行后,先将全局可执行上下文push到栈底,依次遍历代码,将可执行的代码push进栈,代码依次被处理后被pop出栈,当执行完全部的代码,全局可执行上下文pop出,程序结束。
可执行上下文:在上述表达中,入栈的可执行上下文 = 入栈部分代码及其环境(理解成作用域就行了,作用域:全局就是全局作用域,还包括模块作用域、函数作用域以及块作用域)。