什么情况下使用`new Error()`比使用`Error()`更好?

22

ES5语言规范明确说明Error(foo)new Error(foo)具有相同的功能。

但我注意到在实际使用中,较长的表达方式new Error(foo)更为常见。

这是有原因的吗?

是否有任何情况下使用new Error(foo)优于使用Error(foo)


3
考虑到大写函数名称和类名,可以进行静态代码检查,并检查它们必须使用“new”调用。 - Ingo Bürk
1
另一个原因是人们不知道或者知道但更喜欢旧的方式,因为使用新的方式还不是标准模式。 - Ingo Bürk
1个回答

25

这是有原因的吗?

这只是习惯性地使用new调用构造函数,保持一致性规则!即使它们在没有new的情况下也能正常工作,这是一个好的实践,被几个样式指南和相关工具推荐。顺便说一句,自ES6以来,Error可以被子类化,而其子类将需要使用new


看起来,如果子类想要实现相同的行为,它们可以这样做,但并没有要求它们这样做。这表明使用 new 构造自定义错误对象是一个好的实践,因此也可能希望使用 new 构造标准错误对象以保持一致性。 - joeytwiddle
6
实际上,class X extends Error无法实现与此链接中描述的相同行为,当使用构造函数而没有使用new时,它总是会抛出错误。 - Bergi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接