【问题标题】:which is more reliable for passing empty argument, null or undefined? (while expecting a function) [closed]传递空参数、null 或 undefined 哪个更可靠? (同时期待一个功能)[关闭]
【发布时间】:2020-11-04 16:55:08
【问题描述】:

如果我们只对错误感兴趣,那么我们可以使用 null 作为第一个 参数:.then(null, errorHandlingFunction)。或者我们可以使用 .catch(errorHandlingFunction),完全一样:

from javascript.info


当我们想将第一个参数作为空传递时,nullundefined 之间有什么区别吗?我认为undefined 更方便,因为当我们调用没有任何参数的函数时,所有参数都将是undefined。那么什么是最好的,为什么?

谢谢

编辑: 例如

.then(null, errorHandlingFunction)
//or
.then(undefined, errorHandlingFunction)

但我问的不仅仅是.then()的通用目的

编辑 2:这很有趣。 Stack Overflow 管理员将此问题标记为“基于意见”。那么我能做什么呢?我只是想要其他人的意见,有可靠的理由用于一般用法,而不是特定代码 sn-p。

【问题讨论】:

  • 您提供的链接是关于使用 Promise 的。您的问题是否也与 Promises 相关?你能举一个你会遇到这种困境的场景的例子吗?
  • @EmielZuurbier 我添加了额外的信息。我只想知道最佳实践。

标签: javascript function null parameter-passing undefined


【解决方案1】:

对于.then,没关系。如果第一个参数不可调用,那么无论它的值是什么,都将被完全忽略。见specification

  1. 如果 IsCallable(onFulfilled) 为 false,则

一个。让 onFulfilledJobCallback 为空。

所以你也可以.then(123, errorHandlingFunction)

但是,如果您根本不打算将 onFulfilled 回调作为第一个参数传递,则使用 .then 没有意义 - 您应该改用 .catch

.catch(errorHandlingFunction)

完全等价于

.then(somethingNotCallable, errorHandlingFunction)

除了它在语义上更正确且更易于阅读。

但我问的不仅仅是.then()的通用目的

这取决于你;你可以指定你想要的逻辑,函数的用户必须遵守它。

要记住的一点是,如果undefined 用作参数,则可以使用默认参数,但如果传递null,则不会使用默认参数:

const fn = (someArg = 5) => {
  console.log(someArg);
};

fn(null);
fn(undefined);

【讨论】:

  • 谢谢。我理解,但这种情况只是一个例子。我想知道对于发送空参数的一般用法,哪一个是好的并且可以接受?
  • 两者都工作得很好。对于依赖于检查错误参数nullundefined 之间区别的代码,我会非常怀疑。我希望这种差异对任何人都无关紧要。
  • 所以当我们调用第三方函数时,“null”会破坏“默认参数”机制,所以通常使用“undefined”会更好
  • 只有当另一个函数有能力分配一个默认参数时——它可能会也可能不会。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-21
  • 2014-12-14
  • 2021-11-02
  • 1970-01-01
  • 2013-05-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多