Выбор ответа 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 это живая привязка к переменной модуля, а не копия значения.
Варианты ответа
01правильный ответundefined- TypeError: присваивание константе
Разбор
Импорт в ESM это живая привязка к переменной модуля, а не копия значения. После inc() переменная count в counter.mjs стала 1, и импортёр видит 1.
0получился бы в CommonJS приconst { count } = require(...): деструктуризация копирует значение.undefinedневерно, переменная инициализирована.- Ошибка была бы, если бы
main.mjsсам написалcount++: импортированную привязку менять нельзя. Модуль-владелец менять может.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.