ホームページ > ウェブフロントエンド > jsチュートリアル > Babel がインポートされた関数を呼び出すときに `(0, fn)(...)` を使用するのはなぜですか?

Babel がインポートされた関数を呼び出すときに `(0, fn)(...)` を使用するのはなぜですか?

Susan Sarandon
リリース: 2024-12-14 22:24:19
オリジナル
193 人が閲覧しました

Why Does Babel Use `(0, fn)(...)` When Calling Imported Functions?

Babel のコンパイル済み出力に (0, Babel Function Call) があるのはなぜですか?

外部モジュールから関数をインポートしてコードで使用する場合、 Babel の変換された出力で興味深い動作に気づくかもしれません。関数は (0, fn)(...) の形式でラップされます。これは、ルーズ モードでコンパイルした場合のカンマ演算子のない元の関数呼び出しとは異なります。

この変換には特定の目的があります。関数の this コンテキストがグローバル オブジェクトのいずれかに設定されるようにします。非厳密モードの場合、または厳密モードの未定義。 _b.a() を直接呼び出す場合、this はデフォルトで _b モジュール オブジェクトになります。

(0, _b.a)() を使用すると、Babel は強制的にthis を適切な値に設定して呼び出される関数。コンマ演算子 (,) は基本的に、前の式の戻り値 (この場合は 0) を破棄し、このインスタンスの関数呼び出しである右側を評価します。

本質的に、変換されたコードは次と同等です:

0; // Ignore result
var tmp = _b.a;
tmp();
ログイン後にコピー

この手法は、関数の this コンテキストが期待されるものと一致していることを保証します。行動。

以上がBabel がインポートされた関数を呼び出すときに `(0, fn)(...)` を使用するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート