Выбор ответа Middle Функции высшего порядка обновлено

Значение по умолчанию вычисляется на каждый вызов

Вопрос

Что выведет код?

function add(item, list = []) {
  list.push(item);
  return list;
}
console.log(add(1).length, add(2).length);

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

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

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

Коротко

Правильный ответ: 1 1. Выражение по умолчанию в JavaScript вычисляется заново при каждом вызове, когда аргумент undefined.

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

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

Разбор

Выражение по умолчанию в JavaScript вычисляется заново при каждом вызове, когда аргумент undefined. Каждый вызов получает новый пустой массив, поэтому оба раза длина 1. Ответ 1 2 пришёл из Python, где значение по умолчанию создаётся один раз при определении функции. Ошибки нет: push у нового массива работает.

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

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