Відповіді:
В ES6, import
s - це перегляди на експортовані значення лише для читання. Як результат, коли ви це робите import a from "somemodule";
, ви не можете призначити, a
як би ви не заявляли a
в модулі.
Однак, оскільки імпортні змінні є переглядами в реальному часі , вони змінюються відповідно до "сировинної" експортованої змінної в експорті. Розглянемо наступний код (запозичений із довідкової статті нижче):
//------ 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
Як бачите, різниця насправді полягає в тому lib.js
, що не main1.js
.
Узагальнити:
import
змінним -ed, незалежно від того, як ви заявляєте відповідні змінні в модулі.let
-vs- const
семантика застосовується до оголошеної змінної в модулі.
const
, вона не може бути переназначена або відновлена ніде.let
, її можна перепризначити лише в модулі (але не у користувачі). Якщо він змінений, import
змінна -ed змінюється відповідно.
export
деталі ключових слів тут . Наразі його не підтримує жоден із веб-браузерів.