js 预解析

  预解析是js中一个很重要的知识,为了防止忘记和便于后续查找,本博客记录了预解析的重要概念和一些例子。

  一、什么是预解析。

    js引擎运行js会分成两个步骤,一是预解析,二是代码执行。

    (1)预解析指的是,代码执行之前,首先会将js其中所有的变量var和function提前到当前作用域的最前面。

    (2)代码执行是指,按顺序从上到下执行下去。

    更详细的来说,预解析会分为变量(变量提升)和函数(函数提升)这两种预解析,是指分别将变量声明和函数声明提到当前作用域的最前面,不提赋值和调用函数操作。

  二、案例

  1、案例一

 

 

   结合图中预解析过程,执行过程如下:

    (1)将所有的变量声明和函数声明提升,因此提升 var a,var b, function fn() {}至最前面,

    (2)function fn() {}中仍然有变量声明,因此var b提升至fn作用域的最前面。

    (3)然后顺序执行赋值和函数调用

      ① a = 3

      ② console.log(a)  结果为3

      ③ b=5

      ④ fn()

    (4)函数内部执行

      ① console.log(b)  结果为undefined,因为只定义了var b;

      ② b = 14

  2、案例二

 

   最终的结果为:3、3、3、10、13.

  预解析执行的介绍先到这里,后续内容后续章节继续补充

posted @ 2022-10-26 23:11  先起这个昵称  阅读(163)  评论(0编辑  收藏  举报