Rumah >hujung hadapan web >tutorial js >Mengapa Babel Menambah Operator Koma (0,) pada Panggilan Fungsi yang Diimport?

Mengapa Babel Menambah Operator Koma (0,) pada Panggilan Fungsi yang Diimport?

Patricia Arquette
Patricia Arquetteasal
2024-11-30 19:36:13760semak imbas

Why Does Babel Add a Comma Operator (0,) to Imported Function Calls?

Fungsi Panggilan Penulisan Semula dalam Babel: Memahami Operator Koma

Babel, penyusun JavaScript yang popular, menukarkan kod ES6 kepada versi yang serasi untuk pelayar lama . Apabila menghadapi panggilan fungsi daripada modul yang diimport, Babel sering menambahkan operator koma (0,) pada permulaan panggilan. Tingkah laku ini menimbulkan persoalan tentang tujuannya.

Khususnya, fail input yang mengandungi panggilan fungsi import:

import { a } from 'b';

function x () {
  a()
}

dihimpun oleh Babel ke dalam:

'use strict';

var _b = require('b');

function x() {
  (0, _b.a)();
}

Babel's tingkah laku lalai adalah untuk menyusun dalam mod ketat, oleh itu (0,). Dalam mod longgar, panggilan fungsi dikeluarkan sebagai _b.a() tanpa pengendali koma.

Menjelaskan Operator Koma

Penambahan (0,) memastikan bahawa fungsi yang diimport dipanggil dengan objek global sebagai nilai ini, atau tidak ditentukan jika mod ketat didayakan. Tanpa koma, _b.a() akan dipanggil dengan _b sebagai nilai ini.

Pengendali koma menilai ungkapan pertama (0) kepada undefined dan mengabaikan keputusannya. Ia kemudian menilai ungkapan kedua (_b.a) dan memberikannya kepada pembolehubah sementara (tmp). Akhir sekali, ia memanggil pembolehubah sementara (tmp()) dengan objek global sebagai nilai ini.

Pada dasarnya, teknik ini membenarkan fungsi yang diimport beroperasi secara global tanpa menjejaskan nilai konteks panggilan ini.

Kesimpulan

Penggunaan operator koma oleh Babel dalam panggilan fungsi yang diimport memastikan bahawa fungsi itu dipanggil dengan betul tanpa mengira konteks panggilan. Teknik ini dilaksanakan dengan membuang hasil ungkapan koma pertama dan memanggil pembolehubah sementara dengan objek global sebagai nilai ini.

Atas ialah kandungan terperinci Mengapa Babel Menambah Operator Koma (0,) pada Panggilan 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