一尘不染

JavaScript使用“ new”运算符创建对象时,我们可以省略括号吗?

javascript

我看到过这样创建的对象:

const obj = new Foo;

但是我认为创建对象时括号不是可选的:

const obj = new Foo();

创建对象的前一种方法在ECMAScript标准中是否有效并定义?前一种创建对象的方式与后一种创建方式之间有什么区别吗?是一个比另一个更好的选择吗?


阅读 773

收藏
2020-04-25

共1个答案

一尘不染

引用David Flanagan 1:

作为一种特殊情况,new仅对于运算符,JavaScript通过在函数调用中没有参数的情况下允许省略括号来简化语法。以下是使用new运算符的一些示例:

o = new Object;  // Optional parenthesis omitted here
d = new Date();

...

就个人而言,即使构造函数不带任何参数,我也总是使用括号。

另外,如果省略括号,JSLint可能会伤害您的感觉。报告Missing '()' invoking a constructor,该工具似乎没有办法容忍括号遗漏。

2020-04-25