Javascript ES6 export const vs export let

148

Angenommen, ich habe eine Variable, die ich exportieren möchte. Was ist der Unterschied zwischen

export const a = 1;

vs.

export let a = 1;

Ich verstehe den Unterschied zwischen constund let, aber wenn Sie sie exportieren, was sind die Unterschiede?

Cheng
quelle
exportKeyword-Details hier . Derzeit wird es von keinem der Webbrowser nativ unterstützt.
RBT

Antworten:

246

In ES6 sind imports schreibgeschützte Live-Ansichten für exportierte Werte. Infolgedessen import a from "somemodule";können Sie in diesem Fall keine Zuordnung vornehmen, aunabhängig davon, wie Sie dies deklarierena im Modul .

Da es sich bei importierten Variablen jedoch um Live- Ansichten handelt, ändern sie sich beim Export entsprechend der exportierten "rohen" Variablen. Betrachten Sie den folgenden Code (aus dem folgenden Referenzartikel entlehnt):

//------ 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

Wie Sie sehen können, liegt der Unterschied wirklich darin lib.js, nicht main1.js.


Zusammenfassen:

  • Sie können import-ed-Variablen nicht zuweisen , unabhängig davon, wie Sie die entsprechenden Variablen im Modul deklarieren.
  • Die traditionelle let-vs- constSemantik gilt für die deklarierte Variable im Modul.
    • Wenn die Variable deklariert ist const , kann sie nirgendwo neu zugewiesen oder zurückgebunden werden.
    • Wenn die Variable deklariert ist let, kann sie nur im Modul neu zugewiesen werden (nicht jedoch im Benutzer). Wenn es geändert wird, importändert sich die Variable -ed entsprechend.

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

FelisCatus
quelle
2

Ich denke, sobald Sie es importiert haben, ist das Verhalten das gleiche (an der Stelle, an der Ihre Variable außerhalb der Quelldatei verwendet wird).

Der einzige Unterschied wäre, wenn Sie versuchen, es vor dem Ende dieser Datei neu zuzuweisen.

Slomek
quelle