Javascript 传递空参数(null或未定义)哪个更可靠?(在等待函数时)
如果我们只对错误感兴趣,那么我们可以使用null作为第一个 参数:。然后(null,errorHandlingFunction)。或者我们可以使用 .catch(errorHandlingFunction),它完全相同:Javascript 传递空参数(null或未定义)哪个更可靠?(在等待函数时),javascript,function,null,parameter-passing,undefined,Javascript,Function,Null,Parameter Passing,Undefined,如果我们只对错误感兴趣,那么我们可以使用null作为第一个 参数:。然后(null,errorHandlingFunction)。或者我们可以使用 .catch(errorHandlingFunction),它完全相同: 当我们想将第一个参数传递为空时,null和未定义的之间有什么区别吗?我认为未定义更方便,因为当我们调用一个没有任何参数的函数时,所有参数都将未定义。那么什么是最好的,为什么 谢谢 编辑: 比如说 .then(null, errorHandlingFunction) //or
当我们想将第一个参数传递为空时,
null
和未定义的之间有什么区别吗?我认为未定义
更方便,因为当我们调用一个没有任何参数的函数时,所有参数都将未定义
。那么什么是最好的,为什么
谢谢
编辑:
比如说
.then(null, errorHandlingFunction)
//or
.then(undefined, errorHandlingFunction)
但我要求通用,不仅是为了。然后()
编辑2:这很有趣。堆栈溢出管理员将此问题标记为“基于意见”。那我该怎么办?我只想听取其他人的意见,并为一般用法提供可靠的理由,而不是具体的代码片段。使用。然后,
,这并不重要。如果第一个参数不可调用,那么无论它的值是什么,它都将被完全忽略。见:
如果IsCallable(onCompleted)为false,则
a。让onFulfilledJobCallback为空
所以你也可以做。然后(123,errorHandlingFunction)
但是,如果您根本不打算将oncompleted
回调作为第一个参数传递,那么使用。那么就没有意义了-您应该使用。catch
:
.catch(errorHandlingFunction)
这完全等同于
.then(somethingNotCallable, errorHandlingFunction)
只是它的语义更正确,更容易阅读
但我要求通用,不仅是为了。然后()
这取决于你;您可以指定所需的逻辑,函数的用户必须遵守该逻辑
需要记住的一点是,如果将undefined
用作参数,则可以使用默认参数,但如果传递了null
,则不会使用默认参数:
const fn=(someArg=5)=>{
console.log(someArg);
};
fn(空);
fn(未定义)代码>您提供的链接是关于使用承诺的。你的问题是否也与承诺有关?你能举一个你会遇到这种困境的例子吗?@EmielZuurbier我补充了额外的信息。我只是想知道最好的做法。谢谢。我理解,但这种情况只是一个例子。我想知道哪一个对于发送空参数的一般用法来说是好的和可接受的?两者都很好。如果代码依赖于检查错误参数是null
还是undefined
之间的区别,我会非常怀疑。我希望,这种差异对任何人都不重要。因此,当我们调用第三方函数“null”时,可能会破坏“默认参数”机制,因此通常只有当另一个函数能够指定默认参数时,使用“undefined”才更好——它可能会,也可能不会。