JS JavaScript  ·  20 вопросов  ·  ~55 мин  ·  ⏱ Таймер 55:00  ·  Лёгкий  · 

Области видимости и замыкания

Тест проверяет лексическую область, временную мёртвую зону, подъём объявлений и поведение замыканий во времени. Вопросы требуют точно определить, какое связывание видит функция и когда меняется захваченное состояние.

Отвечено: 0 из 20
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. В тесте 20 вопросов и 55 минут; код лучше читать построчно, не полагаясь на первое впечатление. После завершения откроются общий процент, 4 тематических шкал и объяснение каждого решения.
Вопрос 1 из 20
Какое имя прочитает console.log внутри вложенного блока?
JavaScript
const name = "outer";
{
  const name = "inner";
  console.log(name);
}
Вопрос 2 из 20
Что произойдёт при втором console.log?
JavaScript
if (true) {
  let inside = 2;
  console.log(inside);
}
console.log(inside);
Вопрос 3 из 20
Что выведет функция?
JavaScript
function outer(value) {
  function inner() {
    return value;
  }
  return inner();
}
console.log(outer(1));
Вопрос 4 из 20
Как ведёт себя переменная, объявленная через var внутри блока if на верхнем уровне функции?
Вопрос 5 из 20
Какой приём снижает риск ошибки из-за затенения?
Вопрос 6 из 20
Что увидит чтение var до строки присваивания?
JavaScript
console.log(value);
var value = 5;
Вопрос 7 из 20
Что произойдёт при чтении let-переменной value во временной мёртвой зоне?
JavaScript
console.log(value);
let value = 5;
Вопрос 8 из 20
Что произойдёт при первом вызове?
JavaScript
console.log(add(1, 2));
var add = function (a, b) {
  return a + b;
};
Вопрос 9 из 20
Почему typeof missing безопасно возвращает "undefined", а typeof value до let value может выбросить ReferenceError?
Вопрос 10 из 20
Как ведёт себя class declaration до строки объявления?
Вопрос 11 из 20
Какие значения вернут две функции, разделяющие одно замкнутое состояние count?
JavaScript
function makePair() {
  let count = 0;
  return [() => ++count, () => ++count];
}
const [a, b] = makePair();
console.log(a(), b());
Вопрос 12 из 20
Что выведут два счётчика?
JavaScript
function makeCounter() {
  let count = 0;
  return () => ++count;
}
const a = makeCounter();
const b = makeCounter();
console.log(a(), b());
Вопрос 13 из 20
Какое значение вернёт get после вызова set(7)?
JavaScript
function createState() {
  let value = 0;
  return {
    get: () => value,
    set: next => { value = next; }
  };
}
const state = createState();
state.set(7);
console.log(state.get());
Вопрос 14 из 20
Почему удалённый обработчик события иногда продолжает удерживать большой объект в памяти?
Вопрос 15 из 20
Какой способ создаёт действительно закрытое состояние без публикации свойства объекта?
Вопрос 16 из 20
Какое итоговое значение переменной var увидят три отложенных вызова?
JavaScript
for (var i = 0; i < 3; i++) {
  setTimeout(() => console.log(i), 0);
}
Вопрос 17 из 20
Какие значения сохранят отдельные блочные привязки let для трёх таймеров?
JavaScript
for (let i = 0; i < 3; i++) {
  setTimeout(() => console.log(i), 0);
}
Вопрос 18 из 20
Что вернёт reader?
JavaScript
let value = 1;
const reader = () => value;
value = 2;
console.log(reader());
Вопрос 19 из 20
Нужно передать в отложенную задачу снимок текущего объекта, который позже будет изменён. Какой подход надёжнее?
Вопрос 20 из 20
Почему фабрика callback с параметром помогает исправить цикл на var?

Ответьте на все 20 вопросов, чтобы получить результат

🔗 Встроить тест на свой сайт (iframe) ▼

Скопируйте код и вставьте в любое место на вашем сайте:

Также доступна прямая ссылка на embed-страницу