K
K.V. Afilate
@kvafilate18 подп.
171просмотров
17 февраля 2025 г.
Score: 188
// Разница между Context, Scope, Scope-chain и Лексическим окружением в JavaScript // 📌 1️⃣ Context (Контекст) // Это значение this — окружение, которое определяет, откуда вызывается функция. console.log('Глобальный контекст:', this); // В браузере — window, в Node.js — global const user = { name: 'Alice', greet() { console.log('Контекст объекта (this):', this.name); } }; user.greet(); // 'Alice' // 📌 2️⃣ Scope (Область видимости) // Это область, где видны переменные и функции. function exampleScope() { let a = 'локальная'; // a доступна только внутри этой функции console.log(a); } exampleScope(); // 'локальная' // console.log(a); // Ошибка: a is not defined // 📌 3️⃣ Scope-chain (Цепочка областей видимости) // Это механизм поиска переменной вверх по цепочке областей видимости. // Формируется на основе лексического окружения. const globalVar = 'глобальная'; function outer() { const outerVar = 'внешняя'; function inner() { console.log(globalVar); // Ищет в глобальном скоупе console.log(outerVar); // Ищет во внешнем скоупе } inner(); } outer(); // 'глобальная', 'внешняя' // 📌 4️⃣ Lexical Environment (Лексическое окружение) // Лексическое окружение — основа для формирования цепочки областей видимости. // Каждый блок создаёт своё лексическое окружение с переменными и ссылками на внешние окружения. function outerFunc() { let outerVar = 'внешняя переменная'; function innerFunc() { console.log(outerVar); // Получает доступ через лексическое окружение } innerFunc(); } outerFunc(); // 'внешняя переменная' // 📝 Связь между Scope-chain и Lexical Environment: // Scope-chain — это результат объединения лексических окружений. // Лексическое окружение создаёт структуру видимости, которую Scope-chain использует для поиска переменных. // 💡 ИТОГ: // - Context — значение this (кто вызывает функцию). // - Scope — область видимости переменных. // - Scope-chain — цепочка поиска переменных, образованная из лексических окружений. // - Lexical Environment — механизм создания областей видимости и основа для Scope-chain. // 📌 📌 📌 Определение ключевого слова this в JavaScript и примеры📌 📌 📌 // 📌 Определение: // 'this' — это ключевое слово, которое указывает на контекст выполнения функции. // Контекст зависит от способа вызова функции. // 📌 1️⃣ Глобальный контекст // В глобальном контексте this ссылается на глобальный объект (window в браузере, global в Node.js). console.log('Глобальный контекст:', this); // 📌 2️⃣ this внутри метода объекта const user = { name: 'Alice', greet() { console.log('this в методе объекта:', this.name); } }; user.greet(); // 'Alice' // 📌 3️⃣ this в обычной функции // В зависимости от режима ('strict' или нет), this может быть undefined или глобальным объектом. function showName() { console.log('this в обычной функции:', this); } showName(); // В браузере: window, в strict: undefined // 📌 4️⃣ this в стрелочной функции // Стрелочная функция не создаёт свой контекст, а использует внешний. const arrowFunc = () => { console.log('this в стрелочной функции:', this); }; arrowFunc(); // Наследует контекст из внешнего окружения // 📌 5️⃣ this в обработчике события const button = document.createElement('button'); button.innerText = 'Нажми меня'; button.addEventListener('click', function () { console.log('this в обработчике события:', this); }); document.body.appendChild(button); // 📌 6️⃣ Явное указание контекста: call, apply, bind function sayHi() { console.log('Явный контекст:', this.name); } const person = { name: 'Bob' }; sayHi.call(person); // 'Bob' // 💡 Итог: // - 'this' — это контекст выполнения функции. // - В стрелочных функциях 'this' берётся из внешнего контекста. // -
171
просмотров
4000
символов
Нет
эмодзи
Нет
медиа

Другие посты @kvafilate

Все посты канала →
// Разница между Context, Scope, Scope-chain и Лексическим о — @kvafilate | PostSniper