1.暗示全局变量
在介绍javascript执行过程之前,先介绍暗示全局变量的概念。无论是函数体内或者体外未被声明的变量都称为暗示全局变量。
2.Js的执行过程大体分为三个步骤:
- js的脚本加载后,先会通篇检查是否存在语法错误(IDE会报错)
- 全局预编译
- 解释执行:解释一行,执行一行 (这个过程中可能会出现函数预编译)
2.1全局预编译
- 首先会创建一个全局对象(GO),所有var修饰的变量和函数声明都会提升,挂载到GO上作为GO的属性。其中,变量会赋值为undefined,函数赋予函数体,如果函数声明与变量名相同,那么函数覆盖变量。
- 全局编译之后开始从上到下解释执行程序。当遇到调用函数时,先对函数进行预编译,再一行行执行函数体。
2.2函数预编译
- 首先创建AO对象
- 形参和变量声明先提升
- 实参值赋给形参
- 函数变量提升,值为函数体