Babel によるインポートされた関数呼び出しのカプセル化
Babel は、インポートされた関数呼び出しをカンマ演算子 (0, fn)( ...)、期待される fn() の代わりに。この一見無意味なコンマは不可解かもしれません。 Babel がこれを行う理由を詳しく見てみましょう。
JavaScript では、このコンテキストを明示的に指定せずに関数を呼び出すと、デフォルトでグローバル オブジェクトが使用されます。ただし、関数がインポートされたモジュールのプロパティとして定義されている場合、そのコンテキストは自動的にモジュール オブジェクトに設定されます。この「字句結合」を防止し、インポートされた関数が常にグローバル コンテキストで実行されるようにするために、Babel では (0, fn)(...) 構文を導入しています。
カンマ演算子は左側の式を評価します ( 0) 結果を破棄します。これにより 0 が返されますが、これは本質的にプレースホルダーです。この構文構造の目的は、インポートされたモジュール オブジェクトのメソッド呼び出しとしてではなく、関数アプリケーションとして関数呼び出しの実行を強制することです。
本質的には、(0, fn)(... ) は以下と同等の結果を実現します:
0; // Ignore result var tmp = fn; tmp();
不要なカンマを配置することにより、Babel は関数呼び出しを効果的にインターセプトし、グローバル オブジェクトに設定された this コンテキストを使用して関数呼び出しを実行します。これにより、関数は意図しない字句バインディングを引き起こすことなくグローバル変数や関数にアクセスできるようになります。
以上がBabel がインポートされた関数呼び出しにカンマ演算子 (0, fn)(...) を使用するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。