JavaScript中的预解释问题。

JavaScript中的几个预解析问题。

  1. 什么是预解析?
    预解析即将代码提前解析。JavaScript的代码是以从上到下的顺序依次执行,如果使用变量或者调用函数时,定义变量语句在使用变量语句后面执行,定义函数语句在调用函数语句后面执行,会将定义变量,定义函数提前到使用变量和调用函数的语句前。

    例1:在控制台输出number的值

      <script>
            var number = 10;
            console.log(number);   //number=10
        </script>
    
      <script>
            console.log(number);   //undefined
             var number = 10;
        </script>
    

    将上述代码进行对比,number变量定义在输出代码console.log()前,并且输出number=10,number定义在输出代码console.log()后面,则需要预先对number变量的定义进行预解析,即将number变量的定义提前到console.log()代码前,但不赋值,因此代码执行后输出undefined,并且不会报错。

    例2:

      <script>
        var a = 18;
        f1();
        function f1 (){
            var b = 9;
            console.log(a); // undefined
            console.log(b); // 9
            var a = '123';
        }
    </script>
    

    为什么a是undefined而不是18,那是因为JavaScript函数有一个作用链,先执行函数内部的代码, var a = 18 虽然是全局变量,但是对f1()函数不产生影响。因此,var a = ‘123’提前到console.log()函数前定义,所以 a 不是 18 而是undefined。

      <script>
        var a = 18;
         function f1 (){
            var b = 9;
            var a ;
            console.log(a); // undefined
            console.log(b); // 9
            a = '123';
        }
        f1();
       
    </script>
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值