數組的解構與函數變參
解構
es6新增了一個解構功能,如下所示
let [aa,bb,cc]= [1,2,3];
console.log(aa,bb,cc);
//顯示為1 2 3
也就是將右邊數組的元素依次賦值給左邊數組列表中變量 .
let aa,bb,cc;
[aa,bb,cc] = [1,2,3];
let [aa,,cc] = [1,2,3];
let [aa,bb,cc] = [1,2]; //cc===undefined;
//或let [aa,bb,cc] = [1,,3]; //bb===undefined;
function mmm(v) {
if(v=== true) {
return [true,1,2,3];
}
else{
return [false];
}
}
let [result,bb,cc,dd] = mmm(true);
if(result) {
console.log(bb,cc,dd);
}
這個和lua的多值返回一樣的效果.可以簡化一些函數返回處理
變量 操作符…
對于函數變量,es2015增加了操作符…,實際上也是數組,大大簡化了變參的操作.
對于參數名稱,建議使用默認的args
- 常見使用
function sum(…args) {
let r = 0;
for(let i = 0; i < args.length; i++) {
r += args[i];
}
return r;
}
function printLog(…args) {
console.log(…args); //這一步大大簡化了,如果是ES5那就頭痛了.要用arguments,
}
function printLog(…args) {
console.log("專有前綴",…args,"專有后綴");
}
- 因為…args是一個數組,也就是它可以用數組的方法操作.
function printLog(...args) {
for(let i = 0; i < args.length; i++) {
console.log(args[i]);
}
args.push("end");
console.log(...args);
}
let u = [1,2,3];
let u1 = […u,4,5];
console.log(u1); //顯示為[1,2,3,4,5];
后記
到此,所有數組和相關筆記就沒有了,期待Node.js能完整支持es6,省得用babel再編譯了.再復雜的東西,都是由最簡單的元素組成.如果忽視最簡單的元素,就像JavaScript中的let,const,for,數組等,如果不能充分的理解和使用,你所的”高深代碼”能好到哪里去呢?