3.ES6爲什麼需要塊級作用域

爲什麼需要塊級作用域?

    ES5只有全局作用域和函數作用域,沒有塊級作用域,這帶來很多不合理的場景。

            第一種場景,內層變量可能會覆蓋外層變量。

            第二種場景,用來計數的循環變量泄露爲全局變量。

ES6的塊級作用域

         let實際上爲javascript新增了塊級作用域。


-------------------------------------------第一種場景,內層變量可能會覆蓋外層變量。--------------------------------

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>第一種場景</title>
    <!--<script src="js/traceur.js"></script>
    <script src="js/bootstrap.js"></script>
    <script type="text/traceur">
      

    </script>-->

    <script type="text/javascript">
        var time=new Date(); //獲取系統的當前時間
        function fun(){
           console.log(time);
           if(false){
              var time="hello world!";//內部的time把外面全局的time的地址給覆蓋了,但是隻有false時纔會運行time="hello world!",於是undefined
           };
        };

        fun();  //輸出undefined
       
    </script>
</head>
<body>
    
</body>
</html>


--------------------------------------------------第二種場景,用來計數的循環變量泄露爲全局變量。--------------------

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>第二種場景</title>
    <!--<script src="js/traceur.js"></script>
    <script src="js/bootstrap.js"></script>
    <script type="text/traceur">
      

    </script>-->

    <script type="text/javascript">
       var string="hello world!" ;
       for(var i=0;i<string.length;i++){
             console.log(string[i]);
       };
       console.log("循環結束");
       console.log(i);  //輸出12
       
    </script>
</head>
<body>
    
</body>
</html>



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章