Выбор ответа Junior this, call, apply, bind обновлено

this при обычном вызове в строгом режиме

Вопрос

Что выведет код?

'use strict';
function whoAmI() {
  return this;
}
console.log(whoAmI());

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: undefined. В строгом режиме обычный вызов без объекта не подставляет глобальный объект: this остаётся undefined.

Варианты ответа

  1. undefinedправильный ответ
  2. window (глобальный объект)
  3. null
  4. Саму функцию whoAmI

Разбор

В строгом режиме обычный вызов без объекта не подставляет глобальный объект: this остаётся undefined. В нестрогом режиме был бы глобальный объект, это и есть вариант с window. null движок сам не подставляет. Функция не является своим this: this это контекст вызова, а не сама функция. Модули и классы всегда строгие, так что в современном коде ожидайте undefined.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.