Javascript ES6 export const vs export let


149

Katakanlah saya memiliki variabel yang ingin saya ekspor. Apa bedanya

export const a = 1;

vs.

export let a = 1;

Saya mengerti perbedaan antara constdan let, tetapi ketika Anda mengekspornya, apa perbedaannya?


exportdetail kata kunci di sini . Saat ini tidak didukung secara native oleh browser web mana pun.
RBT

Jawaban:


247

Dalam ES6, importadalah tampilan hanya baca langsung pada nilai yang diekspor. Akibatnya, ketika Anda melakukannya import a from "somemodule";, Anda tidak dapat menetapkan atidak peduli bagaimana Anda mendeklarasikan adalam 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:

  • Anda tidak dapat menetapkan importvariabel -ed, tidak peduli bagaimana Anda mendeklarasikan variabel yang sesuai dalam modul.
  • Semantik let-vs- tradisional constberlaku untuk variabel yang dideklarasikan dalam modul.
    • Jika variabel dideklarasikan const, itu tidak dapat dipindahkan atau rebound di mana saja.
    • Jika variabel dideklarasikan let, itu hanya dapat ditugaskan kembali dalam modul (tetapi bukan pengguna). Jika diubah, importvariabel -ed akan berubah.

Referensi: http://exploringjs.com/es6/ch_modules.html#leanpub-auto-in-es6-import-are-live-read-only-views-on-exported-values


2

Saya pikir setelah Anda mengimpornya, tingkah lakunya sama (di tempat variabel Anda akan digunakan di luar file sumber).

Satu-satunya perbedaan adalah jika Anda mencoba menetapkan ulang sebelum akhir file ini.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.