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

Живые привязки в ESM

Вопрос

Что выведет main.mjs?

// counter.mjs
export let count = 0;
export function inc() { count++; }

// main.mjs
import { count, inc } from './counter.mjs';
inc();
console.log(count);

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

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

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

Коротко

Правильный ответ: 1. Импорт в ESM это живая привязка к переменной модуля, а не копия значения.

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

  1. 0
  2. 1правильный ответ
  3. undefined
  4. TypeError: присваивание константе

Разбор

Импорт в ESM это живая привязка к переменной модуля, а не копия значения. После inc() переменная count в counter.mjs стала 1, и импортёр видит 1.

  • 0 получился бы в CommonJS при const { count } = require(...): деструктуризация копирует значение.
  • undefined неверно, переменная инициализирована.
  • Ошибка была бы, если бы main.mjs сам написал count++: импортированную привязку менять нельзя. Модуль-владелец менять может.

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

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

Термины по теме