Javascript 传递空参数(null或未定义)哪个更可靠?(在等待函数时)

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作为第一个 参数:。然后(null,errorHandlingFunction)。或者我们可以使用 .catch(errorHandlingFunction),它完全相同:


当我们想将第一个参数传递为空时,
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”才更好——它可能会,也可能不会。