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

[解決済み】JavaScriptの関数式の前にプラス記号がある場合

2022-03-23 08:20:52

質問

即時呼び出しの関数について調べていたら、どこかでこんな記法を見つけた。

+function(){console.log("Something.")}()

誰か説明してくれませんか? + の記号はどういう意味ですか?

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

に続く部分を強制的にパーサーに扱わせます。 + を式として使用します。これは通常、即座に呼び出される関数に使われる。

+function() { console.log("Foo!"); }();

がない場合は + が存在する場合、パーサが文(式や複数の非式文であることもあります)を期待している状態であれば、この単語は function は関数の始まりのように見えます。 宣言 というより、関数 というように () に続くもの(上の行の最後のもの)は、構文エラーになります(この例では、名前がないこともそうです)。 + つまり、名前は任意で、結果的に関数への参照となり、呼び出すことができるため、括弧は有効です。

+ はオプションのひとつに過ぎません。また、以下のようなことも可能です。 - , ! , ~ その他の単項演算子も同様です。また、括弧を使うこともできます(こちらの方が一般的ですが、構文的にはどちらが正しいというわけではありません)。

(function() { console.log("Foo!"); })();
// or
(function() { console.log("Foo!"); }());