浏览器包括渲染引擎和解析引擎,解析引擎主要负责解析js代码
一、语法分析
js解析引擎首先会先扫描所有的代码,查看代码是否存在语法错误,如果代码存在语法错误,程序立即报错,不会继续执行;如果未发现语法错误,则进入代码正式处理中的预解析(预编译)阶段;
二、代码正式处理
1、预编译阶段
全局执行代码:
①、创建全局对象GO,建立一个存放全局变量的仓库;
②、找到变量申明,提升变量申明,将变量存储在全局仓库中;
③、找到函数申明,提升函数申明;
js是单线程的语句,会解释一行执行一行,执行到函数时进入函数体,将控制权交给函数体;
函数内部代码:
①、创建AO对象;
②、找到变量声明和形参,赋值为默认值undefined;
③、将实参的值赋值给