JS预编译(个人学习笔记)

当浏览器加载HTML页面时,会产生一个供全局JS执行的环境——>全局作用域(window、global object),在js执行之前,浏览器会进行以下三个步骤:

        1、语法分析;

         2、预编译;

         3、解析执行。

预编译:在当前作用域中,js执行之前浏览器默认会把带有var和function的声明进行提前的声明或定义,其中

            var——>在预编译时只是进行提前声明,值为undefined

            function——>在预编译时进行提前声明+定义

函数私有作用域预编译四部曲:

网络资源图片

全局作用域预编译:

        1、创建GO对象(global object);

        2、把带有var和function的声明进行提前的声明或定义

注意点:

        1、预编译只对赋值表达式的左边起作用,等号右边的赋值不进行预编译,例如函数表达式的右边函数不在当前作用域进行预编译。

        2、return后面的函数在当前作用域不进行预编译。

        3、立即执行函数在当前作用域不进行预编译。

        4、代码块内带有var的声明也会进行变量提升,无论条件是否成立,例如if语句中的var声明。

你可能感兴趣的:(JS预编译(个人学习笔记))