JavaScript基础--预解析

一、预解析:

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

二、预解析的情况:

  • 1、函数的提升
  • 2、变量的提升,只是声明的提升,赋值不会提升
  • 3、函数声明的函数名与变量声明的变量名重复,函数提升,变量不提升
  • 4、函数表达式不会提升
  • 5、提升不能超出作用域的范围
    // 1、
    demo1()
    function demo1() {
      console.log('我是函数的声明!')
    }
    /* 
      预解析:
      function demo1() {
         console.log('我是函数的声明!')
       }
       demo1()
    */
    // 2、
    console.log(num) //undefined
    var num = 100
    /* 
      预解析:
      var num
      console.log(num);
      num = 100
    */
    // 3、函数声明的函数名与变量声明的变量名重复,正常解析下,变量覆盖函数

    // demo1()
    console.log(demo1)
    var demo1 = 12
    function demo1() {
      console.log('我是demo1')
    }
    /* 
        预解析后:
         function demo1() {
            console.log('我是demo1')
          }
         console.log(demo1)
          var demo1 = 12
   
    */
   // 4、
    fn1()
    var fn1 = function () {
      console.log('我是fn1')
    }
    //报错
   // 5、
    // var str
    console.log(str) //报错
    function demo2() {
      // var str
      console.log(str)
      var str = '字符串'
      /* 
        预解析后
         var str
        console.log(str)
       str = '字符串'
      */
    }
    demo2()
  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值