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

Живая привязка импорта

Вопрос

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

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

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

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

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

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

Коротко

Правильный ответ: 0 и 1. В ES-модулях импорт это живая привязка к переменной экспортёра, а не копия значения. inc() меняет count внутри counter.js, и main.js видит новое значение 1.

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

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

Разбор

В ES-модулях импорт это живая привязка к переменной экспортёра, а не копия значения. inc() меняет count внутри counter.js, и main.js видит новое значение 1. В CommonJS при const { count } = require(...) было бы 0 и 0: деструктуризация копирует значение один раз. undefined неоткуда взяться: переменная инициализирована нулём.

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

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