[英]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.