> Приведите пример разницы this и замыкания в JavaScript (JavaScript)
Уровень: senior · Роль: frontend · Категория: Технические вопросы
Компании: Exness
Стек: JavaScript
> Пример ответа
this и замыкание - это разные концепции, но их часто путают из-за контекста выполнения.
this - это контекст вызова функции, который определяется тем, как функция вызвана (метод объекта, обычный вызов, стрелочная функция, call/apply/bind). Значение this динамическое.
Замыкание - это способность функции запоминать свою лексическую область видимости (переменные, объявленные во внешней функции) даже после того, как внешняя функция завершила выполнение. Замыкание статическое - оно фиксируется в момент объявления функции.
Пример различия:
JAVASCRIPTfunction outer() {let x = 10; // переменная для замыканияthis.value = 100; // свойство для thisfunction inner() {console.log(x); // замыкание: всегда 10console.log(this.value); // this зависит от вызова}return inner;}const obj = { value: 200 };const fn = outer.call(obj); // устанавливаем this = obj для outerfn(); // выведет: 10 (замыкание) и undefined (this - глобальный объект или undefined в strict mode)const boundFn = fn.bind(obj);boundFn(); // выведет: 10 (замыкание) и 200 (this = obj)
Ключевое отличие: замыкание "запоминает" переменные x из внешней функции независимо от вызова, а this меняется в зависимости от того, как вызвана inner.
> Похожие задачи по frontend
Как реализовать метод перезагрузки счетчика вызовов функции в декораторе JavaScript
Какие встроенные методы JavaScript помогают соединить строки с разделителем
Как работает всплытие и захват событий в JavaScript и какой обработчик сработает первым на div и кнопке
Как определить элемент, по которому был произведен клик при делегировании событий в JavaScript
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью