update js-scope
This commit is contained in:
30
docs/javascript/04-functions/11-scope.md
Normal file
30
docs/javascript/04-functions/11-scope.md
Normal 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
|
||||
Reference in New Issue
Block a user