2017-07-30 27 views
0

它現在可以解構像這樣功能參數:傳遞對象或定位參數的函數

function add({a, b}) { return a + b; } 

可以稱之爲是這樣的:

add({a: 5, b: 9}); 

是否也可以結合這具有位置參數,因此也可以在不命名參數的情況下調用它。例如:

add(5, 9); 
+0

貴和,或大利德羅裏的答案解析問題?函數期望單個對象參數還是多個參數的模式的目的是什麼? – guest271314

回答

3

您可以使用rest parameter,並根據它的長度進行解構。

function add(...args) { 
 
    let a, b; 
 
    
 
    args.length === 1 ? ({ a, b } = args[0]) : [a, b] = args; 
 
    
 
    return a + b; 
 
}; 
 

 
console.log(add({a: 5, b: 9})); 
 
console.log(add(5, 9));

+0

這隻適用於需要多個參數的函數嗎? – kamoroso94

+0

您可以根據參數的長度改變解構方法來適應您的需求。但是,正如@estus在已刪除的答案中所述 - 「多功能簽名具有誤導性,並且需要在提供的參數上進行過多的談判才能解決問題」。 –