我看到过这样创建的对象:
const obj = new Foo;
但是我认为创建对象时括号不是可选的:
const obj = new Foo();
创建对象的前一种方法在ECMAScript标准中是否有效并定义?前一种创建对象的方式与后一种创建方式之间有什么区别吗?是一个比另一个更好的选择吗?
引用David Flanagan 1:
作为一种特殊情况,new仅对于运算符,JavaScript通过在函数调用中没有参数的情况下允许省略括号来简化语法。以下是使用new运算符的一些示例: o = new Object; // Optional parenthesis omitted here d = new Date(); ...
作为一种特殊情况,new仅对于运算符,JavaScript通过在函数调用中没有参数的情况下允许省略括号来简化语法。以下是使用new运算符的一些示例:
new
o = new Object; // Optional parenthesis omitted here d = new Date(); ...
就个人而言,即使构造函数不带任何参数,我也总是使用括号。
另外,如果省略括号,JSLint可能会伤害您的感觉。报告Missing '()' invoking a constructor,该工具似乎没有办法容忍括号遗漏。
Missing '()' invoking a constructor