ES6學習 新的語法 函式引數Spread

2021-07-09 03:14:12 字數 1129 閱讀 9667

spread操作符(...)是比較新的特性,但是在es6的規範中,沒有找到單獨的章節對這個操作符進行說明,這個操作符主要用在兩種情況下:函式傳參和陣列生成,這節主要講解第一種情況。

規範的12.3.6.1中對函式引數列表的解釋如下:

從上面描述的第四步中可以清晰看到,spread操作符後面的表示式應該是個iterator,如果不是第五步會報錯。iterator是什麼,後面具體的章節中在講。在js中,陣列,字串本身就是iterator,但是物件不是。

下面開始看示例,**來了:

math.max(-1, ...[-1, 5, 11], 3);//spread操作符

math.max(...[-1, 5, 11, 3]);

'use strict';

var arr = ;

arr = arr.concat([1,2,3]);

console.log(arr);//1,2,3,4,5,6

arr.push(7,...[8,9],10);//spread操作符

console.log(arr);//1,2,3,4,5,6,7,8,9,10

new date(...[2015, 12, 23])//spread操作符建立date

function foo(x,y,z) 

foo( ...[1,2,3] ); // 1 2 3

foo(3,...[4,5]);//3 4 5

上面都是陣列的例子,下面看個字串的:

'use strict';

var arr = ;

arr.push(..."abc");

console.log(arr);//["a", "b", "c"]

var obj = 

arr.push(...obj);//uncaught typeerror:  is not a function

*以上全部**在chrome 47下通過測試

ES6學習 新加API Object

這篇看看object物件新新增的一些api。1 object.is value1,value2 使用 判斷兩個value是否相等,兩個例外,nan等於nan,0不等於 0。var x nan,y 0,z 0 x x false y z true object.is x,x true object.i...

ES6學習 新的語法 陣列元素Spread

前一篇文章講了spread操作符在函式引數中的用法,這篇簡單講一下spread操作符在陣列元素中的應用。直接看 吧 1,2,3 4 1,2,3,4 let x a b let y c let z d e let arr x,y,z a b c d e abc a b c abc split 舊的寫法...

ES6 函式引數

引數收集 展開 1.收集剩餘引數 rest parameter 必須是最後乙個 function show a,b,args show 2017,12,21,20,10 2.展開陣列 let arr1 1,2,3 let arr2 4,5,6 let arr3 arr1,arr2 console.l...