簡體   English   中英

Javascript 函數(params) 和函數({ params }),一個函數兩種調用類型

[英]Javascript function(params) and function({ params }), one function two call types

有什么辦法可以編寫一個函數,以便像這樣以兩種方式調用它?

我知道如何在函數中編寫兩個 params 結構,但我想知道如何在單個函數中驗證兩個 params 結構。

functionToCall(1, 'value', true);

functionToCall({
    param1: 1,
    param2: 'value',
    param3: true
});

您可以檢查第一個參數,如果它是一個對象,並對缺少的參數進行解構。

如果第一個參數是作為常規所需類型的對象或者類型是any ,則此方法不起作用。

 function functionToCall(param1, param2, param3) { if (param1 && typeof param1 === 'object') { ({ param1, param2, param3 } = param1); } console.log(param1, param2, param3); } functionToCall(1, 'value', true); functionToCall({ param1: 1, param2: 'value', param3: true });

您可以使用 rest params 來獲取參數數組。 如果args數組的長度為 1,則使用對象解構。 如果它不是 1,則在args數組上使用數組解構。

 const functionToCall = (...args) => { let param1, param2, param3; if (args.length === 1) ({ param1, param2, param3 } = args[0]); else ([param1, param2, param3] = args); console.log(param1, param2, param3); }; functionToCall(1, 'value', true); functionToCall({ param1: 1, param2: 'value', param3: true });

例如,您可以這樣做

const functionToCall = () => {
  val [param1, param2, param3] = arguments.length == 1 
    ? Object.entries(arguments[0]).map(v => v[1]) 
    : arguments     
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM