Adakah mengimport modul bermakna membenamkan kod modul pada baris yang sama dengan pernyataan import?
P粉269847997
P粉269847997 2023-09-16 18:25:30
0
1
364

Dari ReferenceError: tidak boleh mengakses perisytiharan leksikal 'X' sebelum pemulaan - JavaScript |

(modul kemasukan):a.js

import { b } from "./b.js"; export const a = 2;

b.js

import { a } from "./a.js"; console.log(a); // ReferenceError: Cannot access 'a' before initialization export const b = 1;

MDN menerangkan:

Dalam contoh ini, pembolehubah yang diimport adiakses, tetapi tidak dimulakan, kerana penilaian

disekat oleh penilaian modul semasaa被访问,但是未初始化,因为a.js的评估被当前模块b.js.

Saya faham ini bermakna mengimport modul bermakna membenamkan kod modul ke dalam baris pernyataan import. Dengan kata lain, apabila menyusun,a.jsmenjadi seperti ini:

console.log(a); // ReferenceError: Cannot access 'a' before initialization const b = 1; const a = 2;

Adakah pemahaman ini betul? Saya tidak melihat ini dijelaskan dalam import - JavaScript |. Oleh kerana promosi berubah-ubah, saya tidak tahu bagaimana untuk menguji ini kerana menyusun semula baris dalama.jstidak mengubah keputusan.

P粉269847997
P粉269847997

membalas semua (1)
P粉165823783

Kod daripada modul yang diimport bukan sahaja dibenamkan ("ditampal") tetapi wujud dalam penutupan yang berasingan. Walaupun ini sudah tentu merupakan penyederhanaan yang berlebihan, saya membandingkan modul dengan fungsi danexport语句与其returnkenyataan:

function a_js() { var b = b_js(); // 不必要的行 return 2; } function b_js() { var a = a_js(); console.log(a); return 1; }
 

Oleh kerana modul mengimport antara satu sama lain, ia tidak boleh dimuatkan dalam sebarang pesanan: menekan sebarang butang akan mengakibatkan ralat "Melebihi saiz timbunan panggilan maksimum".

Tetapi jika anda mengalih keluar baris yang tidak perlu (hanya mengisi pembolehubah tempatan yang kemudiannya dibuang) ia akan berfungsi.

    Muat turun terkini
    Lagi>
    kesan web
    Kod sumber laman web
    Bahan laman web
    Templat hujung hadapan
    Tentang kita Penafian Sitemap
    Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!