小编典典

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

all

我已经看到以这种方式创建对象:

const obj = new Foo;

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

const obj = new Foo();

前一种创建对象的方法是否有效并在 ECMAScript 标准中定义?前一种创建对象的方式和后一种方式有什么区别吗?一个比另一个更受欢迎吗?


阅读 22

收藏
2022-05-13

共1个答案

小编典典

引用大卫弗拉纳根1:

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

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

...

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

此外,如果省略括号, JSLint可能会伤害您的感受。它报告Missing '()' invoking a constructor,并且该工具似乎没有允许括号遗漏的选项。


1 David Flanagan:JavaScript 权威指南:第 4
(第 75 页)

2022-05-13