Определение вывода в консоль для функции фильтрации пользователей №100

В строгом режиме возникнет TypeError при чтении this.currentFilter внутри callback. В нестрогом окружении без глобального currentFilter результат будет пустым массивом.

Короткий ответ

Что ответить на собеседовании

В строгом режиме возникнет 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 и глобальных свойств влияет на поведение исходника.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее