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

fn.length и параметры по умолчанию

Вопрос

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

function f(a, b = 2, c) {}
const g = (...args) => {};
console.log(f.length, g.length);

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

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

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

Коротко

Правильный ответ: 1 0. length функции считает параметры до первого с значением по умолчанию или rest-параметра.

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

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

Разбор

length функции считает параметры до первого с значением по умолчанию или rest-параметра. У f это только a, поэтому 1, хотя объявлено три параметра. Rest-параметр в length не входит, у g получается 0. Это важно для curry: каррирование по fn.length сломается на функциях с дефолтами и rest.

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

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