函数预解析补充

Posted hhmmpp

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了函数预解析补充相关的知识,希望对你有一定的参考价值。

预解析:

  1. 所有的变量声明,都会提升到最顶部,但不会提升赋值

  2. 所有的函数声明,都会提升到最顶部,但不会提升函数的调用

  3. 如果同时有多个 var 声明的相同的变量,后面的 var 将被忽略

  4. 如果同时有多个同名的函数,后面的函数将会覆盖前面的函数

  5. 如果声明的变量和声明的函数同名,声明的函数将会覆盖声明的变量

  6. 词法分析3步骤:

    1. 先分析函数形参(默认值为undefined),再分析形参赋值(没有形参的直接忽略此步骤)

    2. 分析函数体中所有的变量声明:

      2.1 如果变量名与形参名相同时,直接忽略var;

      2.2 如果变量名与形参名不同时,就相当于声明了一个变量,如var foo,值为undefined;

    3. 分析函数体中所有的函数声明,

      3.1 如果函数名与变量名相同,函数整体将作为变量的值;

      3.2 如果函数名与变量名不相同,相当于var 函数名 = function 函数名 () ;

    函数执行过程分为2步:

    1. 词法分析过程;

    2. 执行过程

以上是关于函数预解析补充的主要内容,如果未能解决你的问题,请参考以下文章

22.函数预解析变量与函数优先问题

翻译 – 解释JavaScript的“预解析(置顶解析)”

函数和变量中的预解析

js预解析

js之预解析

JavaScript 作用域(链)预解析闭包函数