Выбор ответа Middle this, call, apply, bind обновлено
Повторный bind
Вопрос
Что выведет код?
function name() { return this.n; }
const first = name.bind({ n: 'первый' });
const second = first.bind({ n: 'второй' });
console.log(second());
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: 'первый'. bind создаёт обёртку, которая всегда вызывает исходную функцию с зафиксированным this.
Варианты ответа
'второй''первый'правильный ответundefined- TypeError: функцию нельзя привязать дважды
Разбор
bind создаёт обёртку, которая всегда вызывает исходную функцию с зафиксированным this. Второй bind оборачивает уже привязанную функцию: он может задать this для обёртки, но обёртка его игнорирует и использует свой { n: 'первый' }. Ошибки нет, повторный bind разрешён и даже полезен для добавления частично применённых аргументов. undefined получилось бы при обычном вызове без привязки.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.