Mengapa Babel Menulis Semula Panggilan Fungsi yang Diimport dalam Mod Ketat
Dalam mod ketat, apabila Babel menemui panggilan fungsi yang diimport, ia menulis semula panggilan itu untuk disertakan pengendali koma, seperti yang dilihat dalam contoh di bawah:
import { a } from 'b'; function x () { a() }
Yang disusun output dalam mod ketat menjadi:
'use strict'; var _b = require('b'); function x() { (0, _b.a)(); }
Transformasi ini memastikan fungsi yang diimport dipanggil dengan set ini kepada objek global (atau tidak ditentukan jika mod ketat didayakan). Tanpa pengendali koma, fungsi yang diimport akan dipanggil dengan set ini ke modulnya.
Penjelasan Operator Koma
Pengendali koma (,) digunakan dalam JavaScript untuk menilai berbilang ungkapan, dipisahkan dengan koma. Ia mengembalikan nilai ungkapan terakhir. Dalam kod yang ditulis semula, pengendali koma digunakan seperti berikut:
(0, _b.a)();
Ini bersamaan dengan kod berikut:
0; // Ignore result var tmp = _b.a; tmp();
Ungkapan pertama, 0, diabaikan. Ungkapan kedua, _b.a, memberikan fungsi yang diimport kepada pembolehubah tmp. Ungkapan ketiga, tmp(), memanggil fungsi yang diimport dengan set ini kepada objek global (atau ke undefined dalam mod ketat).
Dengan menggunakan operator koma, Babel memastikan bahawa fungsi yang diimport sentiasa dipanggil dengan nilai ini yang betul, tanpa mengira konteks pelaksanaan.
Atas ialah kandungan terperinci Mengapa Babel Menambah Operator Koma Apabila Memanggil Fungsi Diimport dalam Mod Ketat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!