JS-预解析(提升)与代码执行过程

1,预解析的过程。

2,代码的执行过程。

预解析:程序在执行过程,会先将代码读取到内存中检查,会将所有的声明在此处进行标记,所谓的标记就是让js解析器知道这个名字,后面在使用这个名字的时候,不会出现未定义的错误,‘这个标记过程就是提升。

## 声明:

             1,名字的声明,标识符的声明(变量的声明)

                     **  名字的声明就是让我们的解析器知道这个名字

                     **  名字并没有任何数据与之对应

            2,函数的声明

                     **  函数声明包括两部分

                     **  函数声明与函数表达式的区别,函数声明是单独写在一个结构里面的,不存在任何语句,逻辑判断结构中

### 又如下面的预解析执行过程

              function f() {};

              ** 首先告诉解析器有这个函数名字的存在,该阶段与变量的名字声明一致

              ** 然后告诉解析器这个名字连接的函数体

### 下面代码的解析执行过程

报错:numb is not a function

报错:

分析过程:

       1,预解析代码,提升名字

                     ***首先提升名字 numb 

                     ***再提升函数名,但是 numb 已经存在,使用跳过,让名字与函数体对应

                     ***预解析后只有一个名字 numb

      2,开始执行代码,从第一句赋值语句开始

                     ***numb 赋值为1

                     ***覆盖了函数体

       3,调用numb,由于numb是数字1,因此保错

*****************************************************************************************************************

 执行结果:1,undefined

                   2,456

 代码解析与执行过程:

猜你喜欢

转载自www.cnblogs.com/xixiaijunjun/p/10079387.html
今日推荐