多くの場合、関数自体を実行する必要がありますが、残念ながらこの書き方は間違っています:
function(){alert(1);}();
その理由は、「function(){alert(1)」の前半部分です。 );}" は関数式ではなく関数宣言とみなされ、後続の "();" が孤立して構文エラーが発生します。
上記の分析によると、このコードには文法上のエラーはありませんが、この関数自体は実行されないため、期待を満たしていません。
function(){alert(1); }(1 );
まとめると、重要なのは、コードが関数宣言ステートメントではなく関数式を記述していることを明確にする方法です。
正しい書き方は数多くあり、それぞれに長所と短所があります。
方法 1: 最初と最後に括弧を追加します。
(function(){alert(1);}()); >これは jslint が推奨する書き方です。利点は、コードを読む人にこのコードが全体であることを思い出させることです。
たとえば、構文強調表示マッチング機能を備えたエディターでは、カーソルが最初の左括弧の後ろにあると、最後の右括弧も強調表示され、コードを見ている人は一目で全体を確認できます。
ただし、コードを書くときに行の後にセミコロンを追加することを好まない一部の学生にとっては、いくつかの落とし穴もあります。たとえば、次のコードは実行エラーを報告します:
。
(function(){alert(1);} ());
方法 2: 関数の前後に括弧を追加します
このアプローチではコードの整合性が 1 つ少なくなります。方法 1 よりもメリットがあります。
方法 3: 関数の前に演算子を追加します。一般的なものは ! と void です。
void function(){alert(2);}();
明らかに、「!」や「」などの演算子を追加するのが最も簡単です。を書きます。
「void」を追加するには 5 回のキー入力が必要ですが、「!」を追加するよりも論理演算が 1 つ少ないという利点があると聞きました。 ----今聞いたんですが、理由が分かりません。
最後に、私個人を代表して、私は方法 1 を強く支持します。これは、jslint の推奨記述方法です。