预解析与隐式的全局变量


预解析

JS引擎在对JS代码进行执行之前,会对JS代码进行预解析。在预解析阶段 会将以关键字var和function开头的语句块提前进行处理

一、预解析的情况

1.函数声明会提升

2.函数表达式不会提升

3、变量的提升 变量会提升,赋值不会提升

4、变量名和函数名相同时 函数会提升,变量名不会提升

二、隐式的全局变量

1、不用var关键字声明的变量

2、用var声明且用;隔开的也是全局变量

3、用var声明且用=连接的也是全局变量

代码(如下):

(function () {
      console.log(a);  //a(){}
      var a = 5;
      function a() {}
      console.log(a);  //5
      function b() {}
      b = 6;
      console.log(b);  //6
      var c = d = b;
    })();
    console.log(d);   //6

//预解析
(function () {
      function a() {} //变量名和函数名相同时  函数会提升,变量名不会提升
      console.log(a);   //a(){}
      var a = 5;
      function a() {}
      console.log(a);    //5
      function b() {}
      b = 6;
      console.log(b);    //6
      var c = d = b;  //用var声明且用=连接的也是全局变量
    })();
    console.log(d);  //6

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值