1. 程式人生 > >let和const變數學習

let和const變數學習

1,var全域性變數,let塊級變數

 var a = [];
    for (let i = 0;/*var i=0*/ i < 10; i++) {
      a[i] = function () {
        console.log(i);
      };
    }
    a[6]();
    //6   10

    var變數導致全域性範圍內有效,所以全域性只
    有一個變數i,最後輸出10而不是6
    
2,for迴圈有一個特別之處,就是設定迴圈變數的那部分是一個
   父作用域,而迴圈體內部是一個單獨的子作用域。

 for (let i = 0; i < 3; i++) {
     let i = 'abc';
     console.log(i);
 }
 // abc
 // abc
 // abc

3,let不存在變數提升:
   var存在變數提升現象,var宣告之前呼叫物件輸出undefinedvar存在變數提升現象,var宣告之前呼叫物件輸出undefined
   let 則不存在這種現象所以直接報錯。
   
4,暫時性死區:
    只要塊級作用域記憶體在let命令,它所宣告的變數就“繫結”

 這個區域,不在受外部的影響
 
var tmp = 123; if (true) { tmp = 'abc'; // ReferenceError let tmp; }

    暫時性死區表明typeof不再是一個百分百安全的操作
    typeof處於let宣告前是在暫時性死區中會報錯,
    當並沒有宣告typeof的變數時反而不報錯,結果為undefined