В строгом режиме возникнет TypeError при чтении this.currentFilter внутри callback. В нестрогом окружении без глобального currentFilter результат будет пустым массивом.
Определение вывода в консоль для функции фильтрации пользователей №100
В строгом режиме возникнет TypeError при чтении this.currentFilter внутри callback. В нестрогом окружении без глобального currentFilter результат будет пустым массивом.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Нужно выяснить, какой текст появится в консоли после выполнения приведённого ниже JavaScript‑кода.
const userService = {
currentFilter: 'active',
users: [
{ name: 'Alex', status: 'active' },
{ name: 'Nick', status: 'deleted' },
],
getFilteredUsers: function() {
return this.users.filter(function(user) {
return user.status === this.currentFilter;
});
}
};
console.log(userService.getFilteredUsers());
Ответ
В строгом режиме возникнет TypeError при чтении this.currentFilter внутри callback. В нестрогом окружении без глобального currentFilter результат будет пустым массивом.
this внешнего getFilteredUsers равен userService, но callback filter — отдельная обычная функция. Объект-получатель ей не передан.
Замените callback на стрелку user => user.status === this.currentFilter либо передайте this вторым аргументом filter. Тогда результатом станет [{name:'Alex', status:'active'}]. Не объявляйте [] универсальным ответом: наличие strict mode и глобальных свойств влияет на поведение исходника.