1 深入V8引擎原理
2 JS执行上下文
3 全局代码执行过程
4 函数代码执行过程
5 作用域和作用域链
源代码->抽象语法树->字节码。
其中的字节码在函数执行的时候,由于参数的类型是一样的,所以有优化的机器码,但是如果参数类型发生变化,又要重新生成机器码然后优化(性能降低)。
有函数会被优先解析,其次是变量。就是下图这样子也能正常运行。如果还有一个变量叫bar的话函数会被参数覆盖,输出的是参数值。
下图是右边代码的初始状态的堆栈图(左边是上下文执行栈ECS;右边是GO、AO等等)