ホームページ > 記事 > ウェブフロントエンド > JavaScript では、「(function () { }) ()」と「(function () { })()」は機能的に同等ですか?
JavaScript では、次の 2 つのコード ブロックは同じ結果を生成するように見えます:
(function () { bar = 'bar'; alert('foo'); })(); alert(bar);
(function () { bar = 'bar'; alert('foo'); }()); alert(bar);
どちらのブロックもメッセージ「foo」の後に「bar」が表示されます。しかし、これら 2 つのコード構造には機能的な違いはありますか?
コード ブロックは同一です
通常の状況では、"(function ( ) { }) ()」と「(function () { })()」は JavaScript では機能的に同じです。どちらも匿名関数を呼び出し、すぐに実行します。この関数は bar 変数を初期化し、メッセージ「foo」を警告します。
ただし、追加の構文がコードに追加されると、相違点が現れる可能性があります。
次のコードを考えてみましょう:
new (function () { this.prop = 4; }) ().prop;
このコードは、関数のクラスの新しいインスタンスを作成し、新しいインスタンスの prop プロパティを取得します。値 4 が返されます。
次のコードを考えてみましょう。
new ( function() { return { Class: function() { } }; }() ).Class;
このコードは、Class プロパティで new 演算子を呼び出します。括弧が入れ子になっているため、関数は通常どおり呼び出され、その戻り値を使用して新しいインスタンスが作成されます。
以上がJavaScript では、「(function () { }) ()」と「(function () { })()」は機能的に同等ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。