ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript では、「(function () { }) ()」と「(function () { })()」は機能的に同等ですか?

JavaScript では、「(function () { }) ()」と「(function () { })()」は機能的に同等ですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-30 08:53:02923ブラウズ

Are

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」を警告します。

他の構文との相違点

ただし、追加の構文がコードに追加されると、相違点が現れる可能性があります。

ケース 1: 関数コンストラクターの構文

次のコードを考えてみましょう:

new (function () {
    this.prop = 4;
}) ().prop;

このコードは、関数のクラスの新しいインスタンスを作成し、新しいインスタンスの prop プロパティを取得します。値 4 が返されます。

ケース 2: 名前空間の構文

次のコードを考えてみましょう。

new ( function() {
    return { Class: function() { } }; 
}() ).Class;

このコードは、Class プロパティで new 演算子を呼び出します。括弧が入れ子になっているため、関数は通常どおり呼び出され、その戻り値を使用して新しいインスタンスが作成されます。

以上がJavaScript では、「(function () { }) ()」と「(function () { })()」は機能的に同等ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。