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 サイトの他の関連記事を参照してください。