Відповіді:
В ES6, imports - це перегляди на експортовані значення лише для читання. Як результат, коли ви це робите 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деталі ключових слів тут . Наразі його не підтримує жоден із веб-браузерів.