5.1 Глобальная область видимости
Области видимости (scopes) определяют доступность переменных и функций в разных частях программы. В JavaScript существует три основных типа областей видимости: глобальная, локальная и блочная. Понимание этих областей видимости важно для эффективного управления данными и предотвращения ошибок в коде.
Глобальная область видимости включает в себя все переменные и функции, объявленные вне каких-либо функций или блоков кода. Эти переменные и функции доступны из любого места в коде.
Пример 1: Объявление глобальных переменных
var globalVar = 'I am a global variable';
function showGlobalVar() {
console.log(globalVar); // Доступ к глобальной переменной
}
showGlobalVar(); // Выведет: I am a global variable
console.log(globalVar); // Доступ к глобальной переменной
Пример 2: Глобальные функции
В этом примере переменная globalVar и функция globalFunction() объявлены в глобальной области видимости и доступны из любого места в коде.
function globalFunction() {
return 'I am a global function';
}
console.log(globalFunction()); // Выведет: I am a global function
5.2 Локальная область видимости
Локальная область видимости включает в себя переменные и функции, объявленные внутри функции. Эти переменные и функции доступны только внутри этой функции и недоступны за ее пределами.
Пример 3: Объявление локальных переменных
В этом примере переменная localVar объявлена внутри функции localScopeExample() и недоступна за пределами этой функции:
function localScopeExample() {
var localVar = 'I am a local variable';
console.log(localVar); // Доступ к локальной переменной
}
localScopeExample(); // Выведет: I am a local variable
console.log(localVar); // Ошибка: localVar is not defined
Пример 4: Локальные функции
В этом примере функция innerFunction() объявлена внутри функции outerFunction() и недоступна за пределами outerFunction():
function outerFunction() {
function innerFunction() {
return 'I am a local function';
}
console.log(innerFunction()); // Доступ к локальной функции
}
outerFunction(); // Выведет: I am a local function
console.log(innerFunction()); // Ошибка: innerFunction is not defined
5.3 Блочная область видимости
Блочная область видимости включает в себя переменные, объявленные с помощью let и const внутри блока кода, ограниченного фигурными скобками {}. Эти переменные доступны только внутри этого блока и недоступны за его пределами.
Пример 5: Объявление переменных с let
В этом примере переменная blockVar объявлена внутри блока if и недоступна за его пределами:
if (true) {
let blockVar = 'I am a block-scoped variable';
console.log(blockVar); // Доступ к блочной переменной
}
console.log(blockVar); // Ошибка: blockVar is not defined
Пример 6: Объявление переменных с const
В этом примере переменная i объявлена внутри блока for и недоступна за его пределами:
for (const i = 0; i < 3; i++) {
console.log(i); // Доступ к блочной переменной
}
console.log(i); // Ошибка: i is not defined
Особенности блочной области видимости
Пример 7: Вложенные блоки
В этом примере переменная innerVar доступна только внутри внутреннего блока, а переменная outerVar доступна как во внешнем, так и во внутреннем блоках:
if (true) {
let outerVar = 'I am in the outer block';
if (true) {
let innerVar = 'I am in the inner block';
console.log(outerVar); // Доступ к переменной внешнего блока
console.log(innerVar); // Доступ к переменной внутреннего блока
}
console.log(outerVar); // Доступ к переменной внешнего блока
console.log(innerVar); // Ошибка: innerVar is not defined
}
5.4 Взаимодействие различных областей видимости
Пример 8: Взаимодействие глобальной и локальной областей видимости
В этом примере функция scopeExample() имеет доступ к глобальной переменной globalVar и к своей локальной переменной localVar:
var globalVar = 'I am a global variable';
function scopeExample() {
var localVar = 'I am a local variable';
console.log(globalVar); // Доступ к глобальной переменной
console.log(localVar); // Доступ к локальной переменной
}
scopeExample(); // Выведет: I am a global variable
// I am a local variable
console.log(globalVar); // Доступ к глобальной переменной
console.log(localVar); // Ошибка: localVar is not defined
Пример 9: Области видимости с функцией-стрелкой
В этом примере функция-стрелка arrowFunction() имеет доступ к глобальной переменной globalVar и к своей локальной переменной localVar:
let globalVar = 'I am a global variable';
const arrowFunction = () => {
let localVar = 'I am a local variable in arrow function';
console.log(globalVar); // Доступ к глобальной переменной
console.log(localVar); // Доступ к локальной переменной
};
arrowFunction(); // Выведет: I am a global variable
// I am a local variable in arrow function
console.log(globalVar); // Доступ к глобальной переменной
console.log(localVar); // Ошибка: localVar is not defined
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ