Vue初學05-var和let的區別

es5中var定義的變量只有全局作用域和函數作用域,沒有塊級作用域的概念。es6中let有塊級作用域,相當於是var的進一步完善。

下面以按鈕點擊爲例,一共5個按鈕,綁定點擊事件,點到第幾個按鈕,提示第幾個按鈕被點擊。

var

<body>
      <div id="app">
          <button>button1</button>
          <button>button2</button>
          <button>button3</button>
          <button>button4</button>
          <button>button5</button>
      </div>
    <script>
        var btns = document.getElementsByTagName("button");
        for (var i = 0; i < btns.length;i++)
        {
            btns[i].addEventListener('click', function ()
            {
                console.log("第"+i+"個按鈕被點擊!")
            });
        }
    </script>
</body>

 運行結果如下圖:

無論點擊哪個按鈕都提示第5個按鈕被點擊,因爲 i 沒有塊級作用域,點擊事件在執行的時候 i 已經變成5了。

let

如果將var改成let,如下所示

<body>
      <div id="app">
          <button>button1</button>
          <button>button2</button>
          <button>button3</button>
          <button>button4</button>
          <button>button5</button>
      </div>
    <script>
        var btns = document.getElementsByTagName("button");
        for (let i = 0; i < btns.length;i++)
        {
            btns[i].addEventListener('click', function ()
            {
                console.log("第"+i+"個按鈕被點擊!")
            });
        }
    </script>
</body>

效果如下所示

 相當於每個按鈕的點擊事件都有一個自己的 i 變量,都是一個塊級作用域。

 

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