Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про JavaScript: this, context

this — как определяется и чем отличается в strict mode

Этот вопрос проверяет понимание контекста выполнения this в JavaScript и различий между строгим и нестрогим режимами.

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

Ключевое слово this в JavaScript ссылается на объект, в контексте которого выполняется функция. В нестрогом режиме, если функция вызывается без контекста, this становится глобальным объектом (window в браузере). В строгом режиме в такой ситуации this будет undefined. Это помогает избежать случайных изменений глобальных переменных и делает код более безопасным.

Длинный ответ

Поведение ключевого слова this - одна из самых сложных тем в JavaScript, которая значительно отличается между строгим и нестрогим режимами.

Как определяется this

Значение this зависит от контекста вызова функции:

  • В методах объекта - this ссылается на сам объект

  • В конструкторах - this ссылается на создаваемый экземпляр

  • В обычных функциях - зависит от режима выполнения

Различия в строгом режиме

Нестрогий режим

function showThis() {
    console.log(this);
}

showThis(); // Window (в браузере) или global (в Node.js)

Строгий режим

'use strict';

function showThis() {
    console.log(this);
}

showThis(); // undefined

Основные случаи определения this

1. Вызов метода объекта

const obj = {
    name: 'Test',
    showThis() {
        console.log(this.name);
    }
};

obj.showThis(); // "Test" - в обоих режимах

2. Вызов функции-конструктора

function Person(name) {
    this.name = name;
}

const person = new Person('John');
console.log(person.name); // "John" - в обоих режимах

3. Использование call, apply, bind

function showName() {
    console.log(this.name);
}

const obj = { name: 'Alice' };

showName.call(obj); // "Alice" - в обоих режимах

Практические рекомендации

  • Всегда используйте строгий режим для предотвращения ошибок

  • Используйте стрелочные функции когда нужно сохранить контекст

  • Явно привязывайте контекст с помощью bind, call, apply когда необходимо

Вывод: Строгий режим делает поведение this более предсказуемым и безопасным, предотвращая случайные обращения к глобальному объекту. Это особенно важно в больших проектах и при работе с модулями.

Уровень

  • Рейтинг:

    4

  • Сложность:

    7

Навыки

  • JavaScript

    JavaScript

Ключевые слова

#this

#context

Подпишись на React Developer в телеграм