JavaScript函数预解析【转】

预解析:

  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步:

    词法分析过程;

    执行过程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值