Rumah >hujung hadapan web >tutorial js >Mengapa Babel Menggunakan `(0, fn)(...)` Apabila Memanggil Fungsi yang Diimport?

Mengapa Babel Menggunakan `(0, fn)(...)` Apabila Memanggil Fungsi yang Diimport?

Susan Sarandon
Susan Sarandonasal
2024-12-14 22:24:19244semak imbas

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

Mengapa (0, Panggilan Fungsi Babel) dalam Output Tersusun Babel?

Apabila mengimport fungsi daripada modul luaran dan menggunakannya dalam kod anda, anda mungkin melihat tingkah laku yang menarik dalam output Babel yang diubah. Fungsi dibungkus dalam bentuk (0, fn)(...). Ini berbeza daripada panggilan fungsi asal tanpa pengendali koma apabila disusun dalam mod longgar.

Transformasi ini mempunyai tujuan khusus: ia memastikan bahawa konteks ini fungsi ditetapkan kepada sama ada objek global dalam mod tidak ketat atau tidak ditentukan dalam mod ketat. Apabila memanggil _b.a() secara terus, ini akan lalai kepada _b objek modul.

Dengan menggunakan (0, _b.a)(), Babel forces fungsi yang akan dipanggil dengan ini ditetapkan kepada nilai yang sesuai. Pengendali koma (,) pada asasnya membuang nilai pulangan ungkapan sebelumnya (dalam kes ini, 0) dan menilai sebelah kanan, iaitu panggilan fungsi dalam kejadian ini.

Pada dasarnya, yang diubah kod adalah bersamaan dengan:

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

Teknik ini menjamin bahawa fungsi ini konteks adalah konsisten dengan tingkah laku yang diharapkan.

Atas ialah kandungan terperinci Mengapa Babel Menggunakan `(0, fn)(...)` Apabila Memanggil Fungsi yang Diimport?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn