關於let以及var的區別


  最近我在看一些文章的時候總是會出現 let 這個關鍵字,讓我很是不解。於是查了一些資料才了解那么一點....

下面直接進入正題,關於let的定義:let 允許把變量的作用域限制在塊級域中。與var的區別在於var 聲明要么是全局變量或者是局部變量,而無法變為塊級的(還是無法理解塊級變量)。

直接上代碼:

    var list = document.getElementById("list");

   for (var i = 1; i <= 5; i++) {

     var item = document.createElement("LI");

     item.appendChild(document.createTextNode("Item " + i));

     let j = i;

     item.onclick = function (ev) {

      console.log("Item " + j + " is clicked.");

    };

    list.appendChild(item);

    };

結果當聲明 j let的時候,每次點擊一個li,每一個li都有自己的事件,輸出結果為:ITem1 is clicked,ITem2 is clickedITem3 is clickedITem4 is clicked,ITem5 is clicked

而我再次把let j = i換成 var j = i時候,每點擊一次li輸出結果為:ITem5 is clicked。因為 var  j = i 是局部變量,5個內部函數都指向了同一個 j ,而 j 最后一次賦值是5。而當用let聲明后,

j 變成塊級域(也就是花括號中的塊,每進入一次花括號就生成了一個塊級域),所以 5 個內部函數指向了不同的 j 。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM