其他分享
首页 > 其他分享> > 预编译知识点

预编译知识点

作者:互联网

JS变量

1.全局变量:定义在script标签的第一层的变量

2.在if语句,循环中属于全局变量

3.局部变量:在函数内部变量,只在函数内部使用或在子级函数使用

预编译前奏

1.暗示全局变量(imply golbal):任何变量未经声明直接赋值 次变量为全局所有

 暗示的,不推荐使用,拖慢速度

 例子:b = 10;

2.一切声明的全局变量全是window的属性

 全局变量会被挂载的window

正式预编译

js在运行时三步骤(三部曲)

1.语法解析(通篇扫描)

2.预编译(预解析)

3.解释执行

预编译(预解析)

1.函数声明整体提升(90%的问题),过于简单不够全面,表达式不提升

2.变量声明提升

函数预编译 四步骤 四部曲

1.创建AO对象(activation object)

2.找形参和变量声明,将变量和形参作为AO对象的属性,值为undefined

3.形参和实参相统一

4.在函数体内找函数声明,值赋予函数体

  一般都是在第二步找到函数声明,当函数不执行时,值为undefined

eg:console.log(a);结果:undefined

           if(false){

                    function a(){}

}

函数预编译发生在函数执行的前一刻,函数执行完毕销毁AO对象,每次函数执行都会进行预编译

AO运行期上下文/执行期上下文

         当函数执行时,会创建一个称为执行期上下文的内部对象,一个执行期上下文定义

了函数执行时的环境,函数每次执行时对应的执行期上下文都是独一无二的,所以多次

调用一个函数会导致创建多个执行期上下文,当函数执行完成,执行期上下文被销毁

函数预编译 四步骤 四部曲

预编译作用:用来调和矛盾的

         全局预编译

    1. 创建GO对象(golbal object)
    2. 变量声明GO属性 值为undefined
    3. 函数声明 值赋予函数体

标签:知识点,函数,编译,执行期,上下文,声明,变量
来源: https://www.cnblogs.com/chenhuaiyou/p/14790307.html