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?

Cheng
sumber
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

FelisCatus
sumber
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.

Slomek
sumber