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

let和const變量學習

就是 abc 對象 fine ren typeof var col 變量

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

let和const變量學習