Что выведет код Middle this, call, apply, bind обновлено
this во вложенной функции
Вопрос
Что выведет код? По строке на каждый вывод.
const obj = {
items: [1, 2],
sumRegular() {
let total = 0;
this.items.forEach(function () { total += this === undefined ? 1 : 100; });
return total;
},
sumArrow() {
let total = 0;
this.items.forEach(() => { total += this === obj ? 1 : 100; });
return total;
},
};
console.log(obj.sumRegular());
console.log(obj.sumArrow());
Попробуйте сами
Напишите, что выведет код: каждый вывод с новой строки.
Показать ответ и разбор
Коротко
Код выведет: 2, 2. Почему так В строгом режиме this обычной функции-колбэка равен undefined.
Что выведет
2
2
Разбор
Почему так
В строгом режиме this обычной функции-колбэка равен undefined. Стрелка берёт this лексически, из метода. Отсюда правило: колбэки внутри методов пишут стрелками (или передают thisArg вторым аргументом forEach).
Вывод
2
2
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.