Область видимости (scope
) - это часть программы, где определенная переменная или функция доступна для использования. Обычно, область видимости определяет контекст, в котором переменная или функция могут быть доступны или недоступны.
Область видимости определяется блоком кода, в котором объявлена переменная. Если переменная объявлена внутри функции, то ее область видимости ограничивается этой функцией. Если переменная объявлена внутри блока кода (например, внутри цикла или условия), то ее область видимости ограничивается этим блоком кода.
Область видимости важна для избежания конфликтов и ошибок в программе, так как переменные могут случайно перезаписываться в других частях кода. Поэтому, важно объявлять переменные в нужной области видимости и следить за тем, где они могут быть доступны.
// Global Scope
var a = 10; // Глобальная переменная
function outerFunc() {
(function innerFunc() {
console.log(a); // 10, так как a доступна в глобальной области видимости
})();
}
outerFunc();
// Function Scope
function outerFunc() {
var a = 10; // Локальная переменная внутри функции
console.log(a); // 10, так как a доступна внутри функции
}
outerFunc();
console.log(a); // ReferenceError: a is not defined, так как a локальная и недоступна вне функции
// Block Scope (let & const)
function func() {
if (true) {
let a = 10; // Локальная переменная в блоке if
const b = 20; // Локальная константа в блоке if
var c = 30; // var игнорирует блоки и имеет функциональную область видимости
}
console.log(a); // ReferenceError: a is not defined, так как let ограничивает область видимости блоком
console.log(b); // ReferenceError: b is not defined, так как const ограничивает область видимости блоком
console.log(c); // 30, так как var имеет функциональную область видимости
}
func();