ホームページ >ウェブフロントエンド >jsチュートリアル >Babel が Strict モードでインポートされた関数を呼び出すときにカンマ演算子を追加するのはなぜですか?

Babel が Strict モードでインポートされた関数を呼び出すときにカンマ演算子を追加するのはなぜですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-08 18:03:15881ブラウズ

Why Does Babel Add a Comma Operator When Calling Imported Functions in Strict Mode?

Babel が Strict モードでインポートされた関数呼び出しを書き換える理由

Strict モードでは、Babel はインポートされた関数呼び出しに遭遇すると、それを次のように書き換えます。以下の例に示すように、カンマ演算子:

import { a } from 'b';

function x () {
  a()
}

コンパイルされたstrict モードでの出力は次のようになります:

'use strict';

var _b = require('b');

function x() {
  (0, _b.a)();
}

この変換により、インポートされた関数は、これをグローバル オブジェクト (または strict モードが有効な場合は未定義) に設定して呼び出されます。カンマ演算子がない場合、インポートされた関数はこれをモジュールに設定して呼び出されます。

カンマ演算子の説明

カンマ演算子 (,) は、カンマで区切られた複数の式を評価する JavaScript。最後の式の値を返します。書き換えられたコードでは、コンマ演算子は次のように使用されます:

(0, _b.a)();

これは次のコードと同等です:

0; // Ignore result
var tmp = _b.a;
tmp();

最初の式 0 は無視されます。 2 番目の式 _b.a は、インポートされた関数を tmp 変数に割り当てます。 3 番目の式 tmp() は、これをグローバル オブジェクト (厳密モードでは未定義) に設定してインポートされた関数を呼び出します。

コンマ演算子を使用することで、Babel はインポートされた関数が常に次の条件で呼び出されることを保証します。実行コンテキストに関係なく、この値を修正してください。

以上がBabel が Strict モードでインポートされた関数を呼び出すときにカンマ演算子を追加するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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