> Приведите пример разницы this и замыкания в JavaScript (JavaScript)

Уровень: senior · Роль: frontend · Категория: Технические вопросы

Компании: Exness

Стек: JavaScript

> Пример ответа

this и замыкание - это разные концепции, но их часто путают из-за контекста выполнения.

this - это контекст вызова функции, который определяется тем, как функция вызвана (метод объекта, обычный вызов, стрелочная функция, call/apply/bind). Значение this динамическое.

Замыкание - это способность функции запоминать свою лексическую область видимости (переменные, объявленные во внешней функции) даже после того, как внешняя функция завершила выполнение. Замыкание статическое - оно фиксируется в момент объявления функции.

Пример различия:

JAVASCRIPT
function outer() {
let x = 10; // переменная для замыкания
this.value = 100; // свойство для this
function inner() {
console.log(x); // замыкание: всегда 10
console.log(this.value); // this зависит от вызова
}
return inner;
}
const obj = { value: 200 };
const fn = outer.call(obj); // устанавливаем this = obj для outer
fn(); // выведет: 10 (замыкание) и undefined (this - глобальный объект или undefined в strict mode)
const boundFn = fn.bind(obj);
boundFn(); // выведет: 10 (замыкание) и 200 (this = obj)

Ключевое отличие: замыкание "запоминает" переменные x из внешней функции независимо от вызова, а this меняется в зависимости от того, как вызвана inner.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью