Jawaban:
Dalam ES6, import
adalah tampilan hanya baca langsung pada nilai yang diekspor. Akibatnya, ketika Anda melakukannya import a from "somemodule";
, Anda tidak dapat menetapkan a
tidak peduli bagaimana Anda mendeklarasikan a
dalam modul.
Namun, karena variabel yang diimpor adalah tampilan langsung , mereka berubah sesuai dengan variabel yang diekspor "mentah" dalam ekspor. Pertimbangkan kode berikut (dipinjam dari artikel referensi di bawah):
//------ lib.js ------
export let counter = 3;
export function incCounter() {
counter++;
}
//------ main1.js ------
import { counter, incCounter } from './lib';
// The imported value `counter` is live
console.log(counter); // 3
incCounter();
console.log(counter); // 4
// The imported value can’t be changed
counter++; // TypeError
Seperti yang Anda lihat, perbedaannya terletak pada lib.js
, bukan main1.js
.
Untuk meringkas:
import
variabel -ed, tidak peduli bagaimana Anda mendeklarasikan variabel yang sesuai dalam modul.let
-vs- tradisional const
berlaku untuk variabel yang dideklarasikan dalam modul.
const
, itu tidak dapat dipindahkan atau rebound di mana saja.let
, itu hanya dapat ditugaskan kembali dalam modul (tetapi bukan pengguna). Jika diubah, import
variabel -ed akan berubah.
export
detail kata kunci di sini . Saat ini tidak didukung secara native oleh browser web mana pun.