先看乙個es6規範下三點運算子的使用例項:
let fun=function(a,...list);
fun('0','a','b','c');//
0 [a,b,c]
以上可以看到我們現在在定義函式物件時可以動態設定引數的個數了:第乙個引數a是普通引數(忽略),
大家可以看到第二個引數list前面有三個點 「...」,這種寫法在es6規範中有兩個用途
1 . 作為引數使用。
2 . 作為拓展運算子使用。
● 三點--作為引數:
let fun1=function(...args);
console.log(args)
};fun1('a','b','c');//
a b c,[a,b,c]
fun1(1,2);//
1 2,[1,2] ...args表示了所有的形參,不管傳入多少引數,都可以通過args進行遍歷得到,args則集合所有的引數組成引數陣列
let fun2=function
(arr,...args);
fun2(1,2,3);//
1, [2,3]
fun2(1);//
1, 當...args有其他引數時,rest引數args陣列集合除去前面引數之後的引數。
let fun3=function
(arr1,..args,arr2)
//此時報錯!切記,三點作為rest引數的時候,其後不能再有任何引數,只能作為最後乙個角色出現!
[x,...y]=[1,2,3];
console.log(y);
//[2,3]
[x,...y,z]=[1,2,3];//
報錯,rest element must be last element in array
//作為引數,三點運算子可以函式,解構賦值等方面發揮重要作用。『人如其名』,rest表示剩下的,
//它把剩下的任意數量的引數推入陣列,所以也繼承了陣列的方法。rest引數只能出現在最後一位,
//不然會報錯,當然以擴充套件運算的身份出現時另當別論。
● 三點--作為拓展運算子使用:
let arr=[1,2,3];console.log(...arr);
//1, 2, 3返回陣列中的各項
let a=[2,3];
console.log(1,...a,4);//
1,2,3,4擴充套件運算子可以放在中間
let divs=document.queryselectorall('div');
[...divs];
//array[300],可以將divs轉為陣列解構;
console.log(...divs);//
div1,div2....遍歷divs各項
let set=new set([1,2,3,3]);
[...set];
//返回陣列[1,2,3],可以將set資料結構轉化為陣列
let map=new map([[1,'a'],[2,'b'],[3,'c']]);
[...map.keys];
//返回[1,2,3],屬性陣列;
[...map.values];//
返回[a,b,c],value陣列
[...'wbiokr'];//
["w", "b", "i", "o", "k", "r"]遍歷字串,返回各個字元;
let str='abc';
['aaa',...str,'ccc'];//
[aaa, a, b, c, ccc]擴充套件運算子位置比較任性
//三點的擴充套件運算子,把陣列或者類陣列物件展開成一系列逗號隔開的值序列,它好比rest引數時候的逆運算。
( 部分事例****: )
三點運算子( )的使用
作用 1 它可以將多餘的引數在行參進行合併,成為陣列 function test a b test 1 gta5 gtasa 作用 2 可以將陣列轉成對應的字串 var a a b c d function test test 作用 3 可以將字串轉成陣列 var a abcd function t...
ES6 擴充套件運算子 三點( )
擴充套件運算子 spread 是三個點 物件中的擴充套件運算子 用於取出引數物件中的所有可遍歷屬性,拷貝到當前物件之中 let bar let baz 上述方法實際上等價於 let bar let baz object.assign bar object.assign方法用於物件的合併,將源物件 s...
ES6三點擴充套件運算子
擴充套件運算子將乙個陣列轉為用逗號分隔的引數序列 將乙個陣列,變為引數序列 3 使用push將乙個陣列新增到另乙個陣列的尾部 合併陣列 將字串轉換為陣列 轉換偽陣列為真陣列 var nodelist document.queryselectorall p var array nodelist 具有i...