ecmascript 6 - Javascript ES6 export const vs export let
Să spunem că am o variabilă pe care vreau să o export. Care este diferența dintre
export const a = 1;
vs
export let a = 1;
Înțeleg diferența dintre const și let, dar când le exporți, care sunt diferențele?
Răspuns #1
În ES6, import-urile sunt vizualizări live doar în citire asupra valorilor exportate. Ca urmare, când faci import a from "somemodule";, nu poți atribui nimic lui a indiferent cum declari a în modul.
Totuși, deoarece variabilele importate sunt active vederi, ele se modifică în funcție de variabila exportată „brută” din exports. Luați în considerare următorul cod (împrumutat din articolul de referință de mai jos):
//------ 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
După cum puteți vedea, diferența se află cu adevărat în lib.js, nu în main1.js.
În rezumat:
- Nu puteți atribui valori variabilelor
import-ate, indiferent de modul în care declarați variabilele corespunzătoare în modul. Semantica tradițională
let-vs-constse aplică variabilei declarate în modul.- Dacă variabila este declarată
const, nu poate fi reatribuibilă sau legată în altă parte.
- Dacă variabila este declarată
- Dacă variabila este declarată
let, ea poate fi reasignată doar în modul (dar nu și de către utilizator). Dacă este modificată, variabilaimport-ată se schimbă corespunzător.
Referință: http://exploringjs.com/es6/ch_modules.html#leanpub-auto-in-es6-imports-are-live-read-only-views-on-exported-values
