ES 的全稱是 ECMAScript , 它是由 ECMA 國際標準化組織,制定的一項腳本語言的標準化規範。面試
每一次標準的誕生都意味着語言的完善,功能的增強。JavaScript語言自己也有一些使人不滿意的地方。函數
變量提高特性增長了程序運行時的不可預測性atom
語法過於鬆散,實現相同的功能,不一樣的人可能會寫出不一樣的代碼spa
ES6中新增了用於聲明變量的關鍵字3d
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關鍵字聲明的變量具備暫時性死區特性