[英]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" });
使用TypeScript或JSDocs可以指導您如何在 IDE 中發送參數
您始終可以將undefined或null作為第一個參數傳遞。 所以它會是這樣的:
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.