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

Дефолты и деструктуризация

Вопрос

Что выведет код? По строке на каждый вывод.

function f({ a = 1, b = 2 } = {}) { return [a, b].join(','); }
console.log(f());
console.log(f({ a: null }));
console.log(f({ a: undefined, b: 5 }));

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

Напишите, что выведет код: каждый вывод с новой строки.

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

Коротко

Код выведет: 1,2, ,2, 1,5. Почему так Значение по умолчанию подставляется только для undefined. null проходит как валидное значение.

Что выведет

1,2
,2
1,5

Разбор

Почему так

Значение по умолчанию подставляется только для undefined. null проходит как валидное значение. Внешний = {} нужен, чтобы вызов без аргументов не падал на деструктуризации undefined.

Вывод

1,2
,2
1,5

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

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