> Почему this равен window, а this.name выводит другое значение в JavaScript (JavaScript)
Уровень: senior · Роль: frontend · Категория: Технические вопросы
Компании: Домклик
Стек: JavaScript
> Пример ответа
В JavaScript значение this определяется контекстом вызова функции, а не местом её объявления. Когда функция вызывается без явного контекста (например, просто foo()), в нестрогом режиме this ссылается на глобальный объект - в браузере это window.
Однако this.name может выводить другое значение, если в глобальной области видимости объявлена переменная name через var или как свойство window.name. Например:
JAVASCRIPTvar name = 'Alice';function showThis() {console.log(this === window); // trueconsole.log(this.name); // 'Alice'}showThis();
Но если name объявлена через let или const, она не становится свойством window:
JAVASCRIPTlet name = 'Bob';function showThis() {console.log(this === window); // trueconsole.log(this.name); // undefined (свойства window.name нет)}showThis();
Также window.name может быть предопределённым свойством (например, имя окна браузера), что даст неожиданное значение. В строгом режиме ('use strict') this в такой ситуации будет undefined, и обращение к this.name вызовет ошибку.
> Похожие задачи по frontend
На какой стадии отрабатывают внешние нецелевые обработчики событий в DOM
Как вызвать функцию, чтобы this указывал на нужный объект, а не на window в JavaScript
Как предотвратить двойной заказ при двойном клике на кнопку?
Как работает приведение типов в выражениях с операторами сравнения в JavaScript
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью