Javascript JS库最佳实践:返回未定义的或在错误的函数输入上抛出错误?

Javascript JS库最佳实践:返回未定义的或在错误的函数输入上抛出错误?,javascript,coding-style,Javascript,Coding Style,在用JavaScript编写库代码时,处理函数无效输入的最标准(最友好)方法是什么?我的直觉告诉我,返回undefined是很好的,但实际上抛出一个错误更有用吗?还是真的没关系 我也可以看到返回false、null甚至-1,但我认为这并不像人们普遍预期的那样 (如果这个问题太主观,我很乐意把它改成cw。)我认为未定义的是可以的,但请记住: JavaScript没有void类型,因此每个函数都必须返回一个 价值默认值未定义,但构造函数除外,其中 默认返回值如下所示 因此,不需要显式返回未定义。默认

在用JavaScript编写库代码时,处理函数无效输入的最标准(最友好)方法是什么?我的直觉告诉我,返回undefined是很好的,但实际上抛出一个错误更有用吗?还是真的没关系

我也可以看到返回false、null甚至-1,但我认为这并不像人们普遍预期的那样


(如果这个问题太主观,我很乐意把它改成cw。)

我认为
未定义的
是可以的,但请记住:

JavaScript没有void类型,因此每个函数都必须返回一个 价值默认值未定义,但构造函数除外,其中 默认返回值如下所示

因此,不需要显式返回未定义。默认情况下,它将是


可能很明显 如果你扩展了一个环境,至少要继续他们的实践

快速回答。 如果浏览器中的javascript未定义,则OK;如果服务器中的javascript未定义,则抛出错误

改进
让库用户选择行为作为选项,可以是库全局,也可以是逐个对象

例外情况的优点:

  • 如果错误很少发生(正常操作中不应出现),那么调用代码在更高级别的位置捕获异常可能更容易、更快,而不是在每次API调用后测试返回值
例外的缺点:

  • 捕获异常要比测试返回值慢得多,所以如果错误是常见的,那么异常将慢得多
  • 如果调用代码要检查它们所做的每个API调用的错误(而不是在更高级别捕获异常),那么围绕每个API调用编写异常比测试返回值更麻烦

库应该用注释进行编码,这些注释清楚地定义了参数必须是或可能是什么以及它们不能是什么,以及任何返回值的类型。最友好的方法是不要用任何它不准备处理的参数调用函数。因此,我有责任记录函数,用户也有责任遵守它的规则。这表明简单地返回未定义就足够了。但是,由于我需要额外的1分钟来抛出一个错误,而不是静静地死去,这难道不会为那些没有花时间阅读文档的人节省数小时的调试时间吗?或者是因为太冗长和错误太多而带来的负面影响。谢谢。对我来说,用户测试返回值的速度和易用性与为每个可能的无效输入抛出异常的速度和易用性非常有意义。速度不重要:异常只是一个异常,这意味着它很少发生。如果你已经期望它发生,不要使用“异常”(因为在这种情况下,它听起来更像是“规则”,这并不一定意味着它是最频繁发生的)。异常处理意外情况,这是不应该发生的事情。在正常的程序流中处理预期的。只是一个意见(从别人那里采纳)。