Javascript 返回参数为空的函数或基于输入参数的1个参数
还有比这更干净的代码吗 Z是可以接受1个参数或空参数的函数。如果我传入了y,那么返回z(y),否则运行z() 如果您将未定义的Javascript 返回参数为空的函数或基于输入参数的1个参数,javascript,typescript,Javascript,Typescript,还有比这更干净的代码吗 Z是可以接受1个参数或空参数的函数。如果我传入了y,那么返回z(y),否则运行z() 如果您将未定义的传递给函数,就好像您根本没有传递任何内容一样 (我是在Javascript的上下文中得出这个答案的,并不是100%确定它是否完全适用于typescript,但我不明白为什么不适用) 这应该可以完成工作。为什么要使用中间层?只需签入z()或添加一个默认值函数z(x=“您喜欢的任何默认值”){…}为什么不总是传递y并检查函数中是否为空?返回y?z(y):z()返回y?z(y)
传递给函数,就好像您根本没有传递任何内容一样
(我是在Javascript的上下文中得出这个答案的,并不是100%确定它是否完全适用于typescript,但我不明白为什么不适用)
这应该可以完成工作。为什么要使用中间层?只需签入z()
或添加一个默认值函数z(x=“您喜欢的任何默认值”){…}
为什么不总是传递y
并检查函数中是否为空?返回y?z(y):z()
返回y?z(y):z()你不应该用?
而不是|
吗。因为0
也是一个虚假的值,它不会通过…@decpk,我试图模仿他的原始逻辑。他做了if(y).
根据你的逻辑z(y | |未定义)
与z(y)
相同。不,z(y)
将在z(0)
中传递,正如你正确指出的那样。在这种情况下,我的代码将执行z(未定义)
。我的代码与z(y)
不完全相同,但我的代码与他在报告中给出的代码相同question@decpk有趣的是,我在这里的答案在功能上与您在上面的评论中给出的答案完全相同。有些情况下,此代码的行为与其原始代码的行为不完全相同y=false
例如,我们并不真正知道z(y)
做了什么——可能它将false
、0
和未定义的
视为相同的,也可能不一样。这就是为什么它值得考虑。OP提到y
将是一个字符串。因此,我确实认为这消除了y=false或0
y=''
的可能性,在这种情况下,这也意味着y='
有一些值(这与一开始甚至不传递y
无关),我们需要将其传递到z()
async x (y?: string) {
if(y) {
return z(y)
} else {
return z()
}
}
async x (y?: string) {
return z(y || undefined);
}
async x(y) {
return z( y ?? undefined)
}