- 在定義函數(shù)時可以傳入默認(rèn)參數(shù)值,當(dāng)不為有默認(rèn)參數(shù)值的參數(shù)傳入值或者主動為其傳入undefined時,會使用這個默認(rèn)值。
- 在ES6中,如果一個函數(shù)使用了默認(rèn)參數(shù)值,arguments對象會保持與命名參數(shù)分離。
function mixArgs(first, second="b") {
console.log(arguments.length);
console.log(first === arguments[0]);
console.log(second === arguments[1]);
first = "c";
second = "d";
console.log(first === arguments[0]);
console.log(second === arguments[1]);
}
mixArgs("a");
// true false false false
- Rest參數(shù)和擴(kuò)展
不確定函數(shù)有幾個參數(shù)時,可以使用...來動態(tài)確定參數(shù)數(shù)量
function sum(...m) {
let total = 0;
for (let i of m) {
total += i;
}
console.log(total);
}
sum(2,4,98,40);
在調(diào)用sum函數(shù)時,可以傳入不同數(shù)量的參數(shù)。
...可以使用在擴(kuò)展數(shù)組中
let [x,y] = [4, 8]; // x, y對號入座,即數(shù)組模型的解構(gòu)
let [x,...y] = [4, 8, 9, 1, 3]; // x對號入座,y就擴(kuò)展為一個包含四個元素的數(shù)組
- Promise語法, 封裝的時候通過鏈?zhǔn)秸{(diào)用.then的方式獲取回調(diào),在resolve中處理結(jié)果,也可以用Promise.all()API同時調(diào)用多個接口和請求,然后通過解構(gòu)一一返回結(jié)果以減少代碼的冗余。
let checkLogin = function () {
return new Promise(function (resolve, reject) {
let flag = document.cookie.indexOf("userId") > -1 ? true : false;
if(flag=true){
resolve({
status: 0,
result: true
});
}else{
reject("error");
}
});
};
let getUserInfo = () => {
return new Promise((resolve, reject) => {
let userInfo = {
userId: "559"
};
resolve(userInfo);
})
};
checkLogin().then((res) => {
if(res.status === 0){
console.log("success");
return getUserInfo();
}
}).catch((error) => {
console.log(`errors:${error}`);
}).then((res2) => {
console.log(`userId:${res2.userId}`);
});
Promise.all([checkLogin(), getUserInfo()]).then(([res1, res2]) => {
console.log(`result1:${res1.result}, result2:${res2.userId}`);
});
Promise.all()中的參數(shù)必須是Promise對象,不能隨便傳別的參數(shù)進(jìn)去。
- 模塊化機(jī)制
export導(dǎo)出,import導(dǎo)入,需要注意的是,如果導(dǎo)出為變量,導(dǎo)入就要用花括號來接受變量
// sum.js
export let sum = (x,y)=>{
return x + y;
};
// main.js
import {sum, minus} from "./util";
也可以通過*封裝然后調(diào)用