ES6新增語法--let

什麼是ES6

ES 的全稱是 ECMAScript , 它是由 ECMA 國際標準化組織,制定的一項腳本語言的標準化規範。面試

 

 

爲何使用 ES6 ?

每一次標準的誕生都意味着語言的完善,功能的增強。JavaScript語言自己也有一些使人不滿意的地方。函數

  • 變量提高特性增長了程序運行時的不可預測性atom

  • 語法過於鬆散,實現相同的功能,不一樣的人可能會寫出不一樣的代碼spa

ES6新增語法

let(★★★)

ES6中新增了用於聲明變量的關鍵字3d

let聲明的變量只在所處於的塊級有效

 if (true) { 
    let a = 10;
}
console.log(a) // a is not defined

注意:使用let關鍵字聲明的變量才具備塊級做用域,使用var聲明的變量不具有塊級做用域特性。blog

不存在變量提高

console.log(a); // a is not defined 
let a = 20;

暫時性死區

利用let聲明的變量會綁定在這個塊級做用域,不會受外界的影響ip

 var tmp = 123;
if (true) {
    tmp = 'abc';
    let tmp;
}

經典面試題

 var arr = [];
for (var i = 0; i < 2; i++) {
    arr[i] = function () {
        console.log(i);
    }
}
arr[0]();
arr[1]();

 

 

經典面試題圖解:此題的關鍵點在於變量i是全局的,函數執行時輸出的都是全局做用域下的i值。作用域

 let arr = [];
for (let i = 0; i < 2; i++) {
    arr[i] = function () {
        console.log(i);
    }
}
arr[0]();
arr[1]();

 

 

經典面試題圖解:此題的關鍵點在於每次循環都會產生一個塊級做用域,每一個塊級做用域中的變量都是不一樣的,函數執行時輸出的是本身上一級(循環產生的塊級做用域)做用域下的i值.string

小結

  • let關鍵字就是用來聲明變量的it

  • 使用let關鍵字聲明的變量具備塊級做用域

  • 在一個大括號中 使用let關鍵字聲明的變量才具備塊級做用域 var關鍵字是不具有這個特色的

  • 防止循環變量變成全局變量

  • 使用let關鍵字聲明的變量沒有變量提高

  • 使用let關鍵字聲明的變量具備暫時性死區特性

相關文章
相關標籤/搜索