-
let命令
let命令存在塊級作用域,兩個變量分別使用var和let聲明兩個變量,然后在代碼塊之外調(diào)用這兩個變量,結(jié)果let聲明的變量報錯,var聲明的變量返回了正確的值;let暫時性死區(qū),只要塊級作用域內(nèi)存在let命令,所聲明的的變量就“綁定binding”這個區(qū)域,不再受外部影響
if (true) {
var a = 10;
let b = 20;
}
console.log(a); //10
console.log(b); //Uncaught ReferenceError: b is not defined
let不存在變量提升,用let聲明變量,極大的消除了代碼的潛在bug的隱患
//var的情況
console.log(foo);
var foo = 2; //undefined
//let的情況
console.log(bar);
let bar = 2; //ReferenceError: Cannot access 'bar'
-
const命令
聲明一個只讀的常量,一旦聲明,常量的值就不能改變
-
箭頭函數(shù)
//定義函數(shù)
var f = function(v) {
return v;
};
//箭頭函數(shù)
var f = v => v
-
如果箭頭函數(shù)不需要參數(shù)或者多個參數(shù),就使用一個圓括號代表參數(shù)部分
let f = () => 5;
// 等同于
let f = function() { return 5 };
let sum = (num1, num2) => {
return num1 + num2;
};
// 等同于
let sum = function(num1, num2) {
return num1 + num2;
};
-
如果只有一個參數(shù),那么圓括號可以省略
let f = str => {
console.log(str);
}
f('hello');
-
如果函數(shù)體的代碼只有一句,那么大括號可以省略
let f = str => console.log(str);
f('hello');
-
如果函數(shù)體中的代碼只有一個return語句,那么return關鍵詞也必須省略
//這是錯誤的
let sum = (num1, num2) => return num1 + num2;
//這是正確的
let sum = (num1, num2) => num1 + num2;
-
由于大括號被解釋為代碼塊,所以如果箭頭函數(shù)直接返回一個對象,必須在對象外面加上括號
let getTempItem = id => ({ id:id, name:'Temp' })
-
使用箭頭函數(shù)簡化回調(diào)函數(shù)
let arr = [1,2,3];
// function函數(shù)寫法
arr = arr.map(function(x) {
return x * x;
});
// 箭頭函數(shù)寫法
arr = arr.map(x => x * x);
-
類
包含constructo構(gòu)造方法,this關鍵字代表實例對象,定義“類”的方法時,前面不需要加function關鍵字,方法之間不需要逗號分隔,會報錯
constructor方法是類的默認方法,通過new命令生成對象實例時,自動調(diào)用該方法。一個類必須要有constructor方法,如果沒有顯式定義,一個空的constructor方法會被默認添加
constructor與普通構(gòu)造函數(shù)的區(qū)別:類的構(gòu)造函數(shù),不使用new是沒法調(diào)用的,會報錯。而constructor不用new也可以執(zhí)行
//定義類
class Point {
constructor(x, y) {
this.x = x;
this.y = y;
}
toString() {
return '(' + this.x + ', ' + this.y + ')';
}
}
//創(chuàng)建對象
let p = new Point(1,2);
console.log(p.toString());
-
模塊化實現(xiàn)
export命令:用于規(guī)定模塊的對外接口
import命令:用于輸入其他模塊提供的功能
- 接受一對大括號,里面指定要從其他模塊導入的變量名。大括號里面的變量名,必須與被導入模塊對外接口的名稱相同。
- 可以使用as關鍵字,將輸入的變量重命名。
- 具有提升效果,會提升到整個模塊的頭部,首先執(zhí)行。
- import是靜態(tài)執(zhí)行,所以不能使用表達式和變量,這些只有在運行時才能得到結(jié)果的語法結(jié)構(gòu)。
- 如果多次重復執(zhí)行同一句import語句,那么只會執(zhí)行一次,而不會執(zhí)行多次。
export default命令
為了給用戶提供方便,讓他們不用閱讀文檔就能加載模塊,就要用到export default命令,為模塊指定默認輸出。