Odpowiedzi:
W ES6 import
są to widoki na żywo tylko do odczytu wyeksportowanych wartości. W rezultacie, kiedy to zrobisz import a from "somemodule";
, nie możesz przypisać do a
bez względu na to, jak zadeklarujesz a
w module.
Ponieważ jednak zaimportowane zmienne są podglądami na żywo , zmieniają się one zgodnie z „surową” eksportowaną zmienną w eksporcie. Rozważ następujący kod (zapożyczony z artykułu referencyjnego poniżej):
//------ 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
Jak widać, różnica naprawdę polega na tym lib.js
, że nie main1.js
.
Podsumowując:
import
zmiennych przypisanych , niezależnie od tego, jak zadeklarujesz odpowiednie zmienne w module.let
-vs- const
dotyczy zadeklarowanej zmiennej w module.
const
, nigdzie nie można jej ponownie przypisać ani powrócić.let
, można ją ponownie przypisać tylko w module (ale nie użytkownikowi). Jeśli zostanie zmieniony, import
zmienna -ed odpowiednio się zmieni.
export
szczegóły słowa kluczowego tutaj . Obecnie żadna z przeglądarek internetowych nie obsługuje tego natywnie.