擴展語句

擴展語法允許在需要多個參數(用于函數調用)或多個元素(用于數組文本)或多個變量(用于結構分配)的位置擴展表達式。

語法

用于函數調用:

myFunction(...interableObj);

用于數組字面量:

[...iterableObj, 4, 5, 6]
范例
更好的 apply 方法

在需要使用數組作為函數的參數的情況下,通常使用 Function.prototype.apply 方法:

function myFunction(x, y, z) { }
var args = [0, 1, 2];
myFunction.apply(null, args);

如果使用了ES6的展開運算符,你可以這么寫:

function myFunction(x, y, z) { }
var args = [0, 1, 2];
myFunction(...args);

還可以同時展開多個數組:

function myFunction(v, w, x, y, z) { }
var args = [0, 1];
myFunction(-1, ...args, 2, ...[3]);

更強大的數組字面量
例子:如果已經有一個數組,此時還需要再新建一個數組,要求新數組包含已有數組的數組項的話,就要用到push,splice,concat等數組方法。有了擴展運算符會然代碼更簡潔:

var parts = ['shoulder', 'knees'];
var lyrics = ['head', ...parts, 'and', 'toes']; // ["head", "shoulders", "knees", "and", "toes"]

和函數調用一樣,數組字面量中也可以使用 ... 多次

更好的 push 方法

例子:再ES5中,我們通常使用push方法將一個數組添加到另一個數組的末尾:

var arr1 = [0, 1, 2];
var arr2 = [3, 4, 5];
// 將arr2中的所有元素添加到arr1中
Array.prototype.push.apply(arr1, arr2);

在ES6中,使用擴展運算符:

var arr1 = [0, 1, 2];
var arr2 = [3, 4, 5];
arr1.push(...arr2);
僅可遍歷對象可用
var obj = {"key1":"value1"};
function myFunction(x) {
    console.log(x); // undefined
}
myFunction(...obj);
var args = [...obj];
console.log(args, args.length) //[] 0
將類數組對象轉換成數組

擴展運算符可以將一個類數組對象中索引范圍在[0, length) 之間的所有屬性的值添加到一個數組中,這樣就可以得到一個真正的數組:

var nodeList = document.querySelectorAll('div');
var array = [...nodeList];
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 第5章 引用類型(返回首頁) 本章內容 使用對象 創建并操作數組 理解基本的JavaScript類型 使用基本類型...
    大學一百閱讀 3,270評論 0 4
  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young閱讀 3,885評論 1 10
  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy閱讀 9,537評論 1 51
  • 最近被水痘折磨得夠嗆,總結了一些知識和經驗。 1. 水痘是由病毒引起的,一般通過呼吸道傳染,然后進入血液,潛伏期最...
    hapjs閱讀 607評論 0 0
  • 分享: 這張卡代表你的()情緒,感覺一下,你和它之間的距離,位置是怎樣? Ta現在的狀態是怎樣? ta有什么話想對...
    yoyo_tt67閱讀 313評論 4 0