函式引數引數物件休息和傳播引數

函式可以以變數的形式獲取輸入,這些變數可以在其自己的範圍內使用和分配。以下函式接受兩個數值並返回它們的總和:

function addition (argument1, argument2){
    return argument1 + argument2; 
}

console.log(addition(2, 3)); // -> 5

arguments 物件

arguments 物件包含所有包含非預設值的函式引數。即使未顯式宣告引數,也可以使用它:

(function() { console.log(arguments) })(0,'str', [2,{3}]) // -> [0, "str", Array[2]]

雖然在列印 arguments 時輸出類似於一個陣列,但它實際上是一個物件:

(function() { console.log(typeof arguments) })(); // -> object

休息引數:function (...parm) {}

在 ES6 中,當在函式引數的宣告中使用時,... 語法將變數向右轉換為包含在宣告的引數之後提供的所有剩餘引數的單個物件。這允許使用無限數量的引數呼叫函式,這些引數將成為此變數的一部分:

(function(a, ...b){console.log(typeof b+': '+b[0]+b[1]+b[2]) })(0,1,'2',[3],{i:4});
// -> object: 123  

傳播引數:function_name(...varb);

在 ES6 中,通過在右側放置一個物件/變數來呼叫函式時,也可以使用 ... 語法。這允許將物件的元素作為單個物件傳遞給該函式:

let nums = [2,42,-1];
console.log(...['a','b','c'], Math.max(...nums)); // -> a b c 42