水牛的es6日記第三天【不定參數的用法】

JavaScript Demo: Functions Rest Parameters

我們在後面把不定參數叫做 rest參數

爲了幫助我們創建更靈活的功能,ES6引入了rest參數作爲功能參數。使用rest參數,您可以創建帶有可變數量參數的函數。這些參數存儲在一個數組中,以後可以從函數內部進行訪問。 查看以下代碼:

function howMany(...args) {
  return "You have passed " + args.length + " arguments.";
}
console.log(howMany(0, 1, 2)); // You have passed 3 arguments.
console.log(howMany("string", null, [1, 2, 3], { }));

rest參數消除了檢查args數組的需要,並允許我們在參數數組上應用map(),filter()和reduce()。

來個小測

使用rest參數修改函數求和,使函數求和能夠接受任意數量的參數並返回其和

const sum = (x, y, z) => {
  const args = [x, y, z];
  return args.reduce((a, b) => a + b, 0);
}

改寫後

const sum = (...args) => {

  return args.reduce((a, b) => a + b, 0);
}

補充:map(),filter(),reduce的用法

注:下面圖文來自楊二小博客

Map、Filter和Reduce常常被用於對一個數組做一些操作,進而轉換成某個新的東西(數據類型不一定還是數組哦~)。下面是我對這三個API的直觀認識:
Map

你想將一個數組中的每一項做個轉換,結果生成了一個新數組,並且新數組的長度和原數組一致。

**在這裏插入圖片描述
Filter

在這裏插入圖片描述

你想將一個數組做一個過濾,按照某規則提取出一些特定的項來。結果也生成了一個新數組,但新數組的長度小於或等於原數組。

Reduce
在這裏插入圖片描述

你想通過遍歷一個數組的每一項來計算出一個新東西,最後生成的結果可以是任何類型的變量:一個新數組,一個新對象,一個新布爾值…

在這裏插入圖片描述

es5其實已經有過類似用法 叫argument

argument

argument拿出來講是因爲,rest參數是es6的內容,argument是之前的,可以作爲補充瞭解。
argument 文檔中解釋它爲“類數組”,像數組但卻沒其內置方法 諸如 foreach(),map()

function func1(a, b, c) {
  console.log(arguments[0]);
  // expected output: 1

  console.log(arguments[1]);
  // expected output: 2

  console.log(arguments[2]);
  // expected output: 3
}

func1(1, 2, 3);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章