Выбор ответа Middle this, call, apply, bind обновлено
Второй аргумент forEach
Вопрос
Что выведет код?
const config = { prefix: '#' };
const out = [];
[1, 2].forEach(function (n) {
out.push(this.prefix + n);
}, config);
console.log(out.join(' '));
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: 1 2. Второй аргумент forEach, map, filter и других методов массива это thisArg: он становится this для обычной функции-колбэка.
Варианты ответа
undefined1 undefined2- TypeError
1 2#1 #2правильный ответ
Разбор
Второй аргумент forEach, map, filter и других методов массива это thisArg: он становится this для обычной функции-колбэка. Поэтому this.prefix равен '#'. Без config в строгом режиме this был бы undefined и случился бы TypeError. Со стрелкой thisArg игнорируется, потому что стрелке this не назначить. Вариантам с undefined нужен объект без prefix, а тут он есть.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.