rest 參數(shù)
rest 參數(shù)叫做不定(剩余)參數(shù)歌溉,寫法就是 ... 返回?cái)?shù)組結(jié)構(gòu)。這個(gè) ... 必須要加到最后一項(xiàng)。只能在結(jié)構(gòu)中的最后涩笤。
var [a,b,c] = [1,2,3,4,5,6,7];
console.log(a);
console.log(b);
console.log(c);
var [aa,bb,...cc] = [1,2,3,4,5,6,7];
console.log(aa);
console.log(bb);
console.log(cc);
這個(gè)例子中 rest 參數(shù)不能放在 aa 或者 bb 的前面,只能放 cc 的前面盒件。數(shù)據(jù)的返回格式是數(shù)組蹬碧。
在函數(shù)中也可以有 rest 參數(shù)。
function show(a,b,...c){
console.log(c)
};
show(1,2,3,4,5,6);
在函數(shù)的位置中也是包括在最后的炒刁。
函數(shù)的 length 是不包括 rest 參數(shù)的恩沽。這句話的意思是 ... 是不包括在函數(shù)的 length 中的。
function show(a,b,...c){
console.log(show.length)
}; //長(zhǎng)度返回 2 不是 3 這說明 ...c 沒有包括進(jìn)去
擴(kuò)展運(yùn)算符 ...
擴(kuò)展運(yùn)算符 ... 是 rest 參數(shù)的逆運(yùn)算翔始。
var arr = [1,2,3,4,5,6,7];
console.log(arr);
console.log(...arr);
把數(shù)組再次轉(zhuǎn)化為字符串的形式
同樣的函數(shù)也是可以的罗心,
var arr = [1,2,3];
function show(a,b,c){
console.log(a);
console.log(b);
console.log(c);
};
show(...arr);
show(arr);
擴(kuò)展運(yùn)算符可以轉(zhuǎn)的數(shù)據(jù)結(jié)構(gòu)是有遍歷器接口的都可以轉(zhuǎn)里伯。在ES6中,有三類數(shù)據(jù)結(jié)構(gòu)原生具備Iterator接口:數(shù)組渤闷、某些類似數(shù)組的對(duì)象疾瓮、Set和Map結(jié)構(gòu),對(duì)象(Object)之所以沒有默認(rèn)部署Iterator接口飒箭,是因?yàn)閷?duì)象的哪個(gè)屬性先遍歷狼电,哪個(gè)屬性后遍歷是不確定的,需要開發(fā)者手動(dòng)指定弦蹂。這里推薦一篇文章 Iterator接口 肩碟。