js预解析分段的问题的局部作用域的问题

本文深入探讨JavaScript中变量的提升现象与作用域规则,通过具体代码示例展示函数内部及不同script标签间变量提升的行为差异,揭示JavaScript预解析机制下变量提升的特点。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>$永远的24k纯帅$</title>
  <script>
    //预解析中,变量的提升,只会在当前的作用域中提升,提前到当前的作用域的最上面
    //函数中的变量只会提前到函数的作用域中的最前面,不会出去
    //预解析会分段(多对的script标签中函数重名,预解析的时候不会冲突)

//    function f1() {
//
//      console.log(num);//undefined
//      var num=10;
//    }
//    f1();
//    console.log(num);//
    function f1() {
      console.log("哈哈");
    }

  </script>
  <script>
    f1();
    function f1() {
      console.log("嘎嘎");
    }
  </script>
</head>
<body>
</body>
</html>

 

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>$永远的24k纯帅$</title>

  <script>

    //    var a = 25;
    //    function abc (){
    //      alert(a);//undefined
    //      var a = 10;
    //    }
    //    abc();
    //    console.log(a);//25


    //  var a;
    //function a() {
    //  console.log('aaaaa');
    //}
    //    console.log(a);
    //
    //   a = 1;
    //    console.log(a);//1

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


//    function f1() {

var a=b=c=9;
//      var a;//局部变量
//      a=9;
//      //隐式全局变量
//      b=9;
//      c=9;
//      console.log(a);//9
//      console.log(b);//9
//      console.log(c);//9
//    }
//    f1();
//    console.log(c);//  9
//    console.log(b);// 9
//    console.log(a);//报错

    //console.log(parseInt(Math.random()*57+1));
  </script>
  <script>

    f1();//-----报错
   var f1=function () {
      console.log(a);
      var a=10;
    };

    function f2() {

    }
    f2();

  </script>
</head>
<body>
</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值