簡體   English   中英

如何將我通過函數傳遞的變量綁定到特定參數

[英]How to bound variable which I pass through function to a specific parameter

非常愚蠢的問題。 例如,我有一個變量數據,並且我有帶有兩個參數 par1 和 par2 的函數 DoSomething。 它們都是可選參數,如果我什么都不傳遞,它們將為空。 但是我只有一個變量數據,我想綁定到第二個參數而不觸及第一個參數。 用不同的語言我應該寫類似DoSomething(par2 = data)DoSomething(par2: data)但所有這些例子都會引發異常Uncaught SyntaxError: missing ) 那我做錯了什么?

如果 JavaScript 中有兩個可選參數,只需將undefined傳遞給第一個參數。

DoSomething(undefined, data);

undefined是未傳入參數時的默認值( DoSomething()將使兩個參數都undefined ),除非您為可選參數設置默認值。

另一種選擇是將參數作為對象傳遞,這需要更改函數的定義以及對它的所有調用:( ??Nullish 合並運算符

function DoSomething(args) {
  const par1 = args.par1 ?? "default value";
  const par2 = args.par2 ?? "default value";
}

// ....
DoSomething({ par2: "custom value" });
DoSomething({ par1: "custom value", par2: "customValue" });

使用TypeScriptJSDocs可以指導您如何在 IDE 中發送參數

您始終可以將undefinednull作為第一個參數傳遞。 所以它會是這樣的:

DoSomething(undefined, data);

如果你有多個可選參數,如果你不想傳遞 undefined.. 你應該使用一個對象作為參數。

// instead of DoSomething(param1, param2)
function DoSomething(param = {}) {
  const { param1, param2 } = param;

  //..do something with param1 and param2
}

DoSomething({ param2: 'somevalue' })

如果您考慮使用打字稿,那就更好了,因為您可以將類型添加到參數中。

首先,如果您不傳遞參數,它將是undefined ,而不是null

如果你想跳過第一個參數,你仍然需要傳入它,只需將它作為 falsy 傳入(假設你的doSomething函數處理這種情況)。

 const data = 'foo'; function doSomething(param1, param2) { if (param1) console.log(param1); if (param2) console.log(param2); } doSomething(null, data);

如果你有與 Python 類似的功能,你可以接受一個參數,它是一個對象。

 const data = 'foo'; function doSomething({ param1, param2 }) { if (param1) console.log(param1); if (param2) console.log(param2); } doSomething({ param2: data });

暫無
暫無

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

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