Выбор ответа Middle Модули обновлено

Присваивание импортированной переменной

Вопрос

Что произойдёт при выполнении main.js?

// config.js
export let mode = 'dev';

// main.js
import { mode } from './config.js';
mode = 'prod';

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: TypeError: Assignment to constant variable. Импортированная привязка доступна импортёру только для чтения, даже если в экспортёре это let.

Варианты ответа

  1. mode в config.js станет 'prod'
  2. Изменится только локальная копия в main.js
  3. TypeError: Assignment to constant variableправильный ответ
  4. Присваивание молча проигнорируется

Разбор

Импортированная привязка доступна импортёру только для чтения, даже если в экспортёре это let. Попытка присвоить бросает TypeError, как при записи в const. Менять значение может только сам модуль config.js, например через экспортированную функцию setMode. Локальной копии в ESM нет, а молчаливого игнорирования не бывает, потому что модули всегда в строгом режиме.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.