【问题标题】:When is `new Error()` better than `Error()`?`new Error()` 什么时候比 `Error()` 更好?
【发布时间】:2016-12-10 02:38:11
【问题描述】:

Error(foo) 的 ES5 语言规范 clearly statesnew Error(foo) 做同样的事情。

但我注意到,在野外,较长的new Error(foo) 形式更为常见。

这有什么原因吗?

在任何情况下使用new Error(foo) 比使用Error(foo) 更可取?

【问题讨论】:

  • 可能存在静态代码检查,考虑大写函数名类并检查它们是否必须用 new 调用。
  • 另一个原因是人们不知道或不知道但更喜欢它,因为这是他们习惯的,因为使用 new 已成为标准模式。

标签: javascript error-handling idioms


【解决方案1】:

这有什么原因吗?

这只是使用new 调用构造函数的简单习惯。一致性规则!

即使他们在没有new 的情况下工作也是一个很好的做法,并且被多个样式指南和相关工具推荐。顺便说一句,由于 ES6 Error is subclassible 及其子类将需要 new

【讨论】:

  • 看起来子类可以实现相同的行为,如果他们愿意的话,但没有要求他们这样做。这表明使用 new 构造自定义错误对象是一种很好的做法,因此为了保持一致性,可能还需要使用 new 构造标准错误对象。
  • @joeytwiddle 实际上,class X extends Error cannot implement the same behaviour,在没有new 的情况下调用构造函数时总是抛出。
  • 嗯,这卖给了我。 new Error(_) 是!
猜你喜欢
  • 2011-09-27
  • 1970-01-01
  • 1970-01-01
  • 2018-02-27
  • 2012-07-24
  • 1970-01-01
  • 2012-05-29
  • 2011-05-12
  • 2010-12-08
相关资源
最近更新 更多