1. ホーム
  2. ジャバスクリプト

[解決済み】new演算子でオブジェクトを作成する際に、括弧を省略することはできますか?

2022-04-17 21:35:56

質問

この方法でオブジェクトが作成されているのを見たことがあります。

const obj = new Foo;

しかし、オブジェクトを作成する際に括弧は任意ではないのでは?

const obj = new Foo();

前者のオブジェクトの作成方法は有効で、ECMAScriptの標準に定義されているのでしょうか?前者のオブジェクト作成方法と後者のオブジェクト作成方法の間に違いはありますか?また、どちらを選ぶべきでしょうか?

どのように解決するのですか?

引用元 デビッド・フラナガン 1 :

特殊なケースとして new 演算子に限って言えば、JavaScript では、関数呼び出しに引数がない場合は括弧を省略できるようにして、文法を簡略化しています。以下は new 演算子を使用します。

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

...

個人的には、コンストラクタが引数を取らない場合でも、常に括弧を使用します。

おまけ JSLint は、括弧を省略すると痛い目にあうかもしれません。それは Missing '()' invoking a constructor このツールには、括弧の省略を許容するオプションはないようです。


1 デビッド・フラナガン ジャバスクリプト・ザ・ディフィニティブ・ガイド 第4版 (75ページ)