[解決済み] なぜ babel は import された関数呼び出しを (0, fn)(...) に書き換えるのでしょうか?
2022-10-11 09:42:54
質問
のような入力ファイルがあるとします。
import { a } from 'b';
function x () {
a()
}
babel はこれを次のようにコンパイルします。
'use strict';
var _b = require('b');
function x() {
(0, _b.a)();
}
として出力されますが、ルーズモードでコンパイルされた場合、関数呼び出しは
_b.a();
コンマ演算子がどこで追加されるのか、それを説明するコメントがあることを期待して、いくつか調査してみました。 追加を担当しているコードは ここに .
どのように解決するのですか?
(0, _b.a)()
は、関数を確実に
_b.a
が呼び出されるように
this
をグローバルオブジェクトに設定し (ストリクトモードが有効な場合は
undefined
). もし、あなたが
_b.a()
を直接呼び出すとしたら
_b.a
が呼び出されるのは
this
に設定された
_b
.
(0, _b.a)();
と同じです。
0; // Ignore result
var tmp = _b.a;
tmp();
(この
,
はカンマ演算子です。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comma_Operator
).
関連
-
[解決済み] なぜGoogleはJSONレスポンスにwhile(1);を前置するのでしょうか?
-
[解決済み] 私のJavaScriptコードは "No 'Access-Control-Allow-Origin' header is present on requested resource "というエラーを受け取りますが、Postmanはそうならないのはなぜですか?
-
[解決済み] なぜ ++[[]][+[] +[+[]] は "10" という文字列を返すのでしょうか?
-
[解決済み] parseInt(1/0, 19)はなぜ18を返すのですか?
-
[解決済み] 関数内で変数を変更した後、変数が変更されないのはなぜですか?- 非同期コードリファレンス
-
[解決済み】関数の前のエクスクラメーションマークは何をするのですか?
-
[解決済み] チェックボックスが選択されているかどうかを確認するjQuery
-
[解決済み] JavaScriptで文字列を数値に変換する最速の方法は何ですか?
-
[解決済み] JavaScriptでの大文字小文字を区別しない正規表現
-
[解決済み] JavaScriptでjson-objectのキーを取得する [重複].
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] javascript の関数から `undefined` と `null` のどちらを返すのが良いのでしょうか?
-
[解決済み] WebStormで未解決の変数が大量にある場合の警告に対処する方法は?
-
[解決済み] 兄弟ノードを選択する方法はありますか?
-
[解決済み] JavaScriptを使用してHTML要素に属性を追加/更新するには?
-
[解決済み] Chromeのwebkitインスペクタで「Unsafe JavaScript attempt to access frame with URL...」というエラーが継続的に発生する。
-
[解決済み] JavaScriptで長い配列を小さい配列に分割する方法
-
[解決済み] Node.jsのES6クラスをrequireで作る
-
[解決済み] なぜjavascriptのES6 Promisesはresolve後も実行を継続するのですか?
-
[解決済み] HTML要素にスクロールバーがあるかどうかをチェックする
-
[解決済み] JavaScriptのArray.sort()メソッドでシャッフルするのは正しいのか?