Risposte:
In ES6, le import
s sono viste di sola lettura live sui valori esportati. Di conseguenza, quando lo fai import a from "somemodule";
, non puoi assegnarlo a
indipendentemente da come dichiari a
nel modulo.
Tuttavia, poiché le variabili importate sono viste live , cambiano in base alla variabile esportata "grezza" nelle esportazioni. Considera il seguente codice (preso in prestito dall'articolo di riferimento di seguito):
//------ 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
Come puoi vedere, la differenza sta proprio nel lib.js
no main1.js
.
Riassumere:
import
variabili -ed, indipendentemente da come si dichiarano le variabili corrispondenti nel modulo.let
-vs- si const
applica alla variabile dichiarata nel modulo.
const
, non può essere riassegnata o rimbalzata da nessuna parte.let
, può essere riassegnata solo nel modulo (ma non l'utente). Se viene modificato, la import
variabile -ed cambia di conseguenza.Riferimento: http://exploringjs.com/es6/ch_modules.html#leanpub-auto-in-es6-imports-are-live-read-only-views-on-exported-values
export
dettagli delle parole chiave qui . Attualmente non è supportato in modo nativo da nessuno dei browser Web.