update js-scope

This commit is contained in:
2025-03-28 14:10:12 +03:00
parent 255d594e6a
commit 03d97da3d1
2 changed files with 36 additions and 34 deletions

View File

@@ -0,0 +1,30 @@
---
sidebar_position: 11
---
# Область видимости (scope)
В JavaScript **область видимости (scope)** определяет, где переменные, функции и другие идентификаторы могут быть использованы в коде. Понимание области видимости важно для написания корректного и предсказуемого кода. В JavaScript есть несколько типов областей видимости:
1. **Глобальная область видимости (Global Scope)** \
Переменные, объявленные вне всех функций или блоков, находятся в глобальной области видимости. Они доступны из любого места в коде.
2. **Локальная область видимости (Function Scope)** \
Переменные, объявленные внутри функции, доступны только внутри этой функции. Это называется function scope.
3. **Блочная область видимости (Block Scope)** \
С появлением let и const в ES6 появилась блочная область видимости. Переменные, объявленные внутри блока (например, внутри {}), доступны только внутри этого блока. \
Обратите внимание, что var не имеет блочной области видимости
4. **Лексическая область видимости (Lexical Scope)** \
JavaScript использует лексическую (статическую) область видимости. Это означает, что область видимости определяется во время написания кода, а не во время выполнения. Вложенные функции имеют доступ к переменным из внешних функций.
5. **Область видимости модулей (Module Scope)**
В ES6 появились модули, которые имеют свою собственную область видимости. Переменные, объявленные в модуле, не доступны извне, если они не экспортированы.
6. **Цепочка областей видимости (Scope Chain)**
Когда JavaScript ищет переменную, он сначала проверяет текущую область видимости, затем переходит к внешним областям, пока не достигнет глобальной области. Если переменная не найдена, возникает ошибка.
7. **Замыкания (Closures)**
Замыкание — это функция, которая запоминает свое лексическое окружение даже после того, как внешняя функция завершила выполнение. Это возможно благодаря области видимости.
- **Глобальная область видимости:** переменные доступны везде.
- **Локальная (function scope):** переменные доступны только внутри функции.
- **Блочная (block scope):** переменные доступны только внутри блока ({}), если объявлены через let или const.
- **Лексическая область видимости:** вложенные функции имеют доступ к переменным из внешних функций.
- **Модульная область видимости:** переменные в модулях изолированы.
🚀 Источник: DeepSeek