Pengenkapsulan Babel bagi Panggilan Fungsi Diimport
Babel sering menjana kod yang melampirkan panggilan fungsi yang diimport dengan operator koma, (0, fn)( ...), bukannya fn() yang dijangkakan. Koma yang kelihatan tidak berfaedah ini boleh membingungkan. Mari kita mendalami sebab Babel melakukan ini.
Dalam JavaScript, menggunakan fungsi tanpa menyatakan secara eksplisit konteks ini lalai kepada objek global. Walau bagaimanapun, apabila fungsi ditakrifkan sebagai sifat modul yang diimport, konteks ini ditetapkan secara automatik kepada objek modul. Untuk mengelakkan "pengikatan leksikal" ini dan memastikan fungsi yang diimport sentiasa dilaksanakan dalam konteks global, Babel memperkenalkan sintaks (0, fn)(...).
Pengendali koma menilai ungkapan di sebelah kirinya ( 0) sambil membuang hasilnya. Ini menghasilkan 0, yang pada asasnya adalah pemegang tempat. Tujuan binaan sintaksis ini adalah untuk memaksa pelaksanaan panggilan fungsi sebagai aplikasi fungsi, bukannya sebagai panggilan kaedah pada objek modul yang diimport.
Pada dasarnya, (0, fn)(... ) mencapai persamaan dengan:
0; // Ignore result var tmp = fn; tmp();
Dengan meletakkan koma yang tidak diperlukan, Babel secara berkesan memintas panggilan fungsi dan melaksanakannya dengan set konteks ini kepada objek global. Ini memastikan bahawa fungsi boleh mengakses pembolehubah dan fungsi global tanpa mencetuskan sebarang pengikatan leksikal yang tidak diingini.
Atas ialah kandungan terperinci Mengapa Babel Menggunakan Operator Koma (0, fn)(...) untuk Panggilan Fungsi yang Diimport?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!