Урок 3.1: Область видимости и замыкания
Цели урока:
- Понять, что такое область видимости в JavaScript и как она работает.
- Изучить различия между глобальной, локальной и блочной областями видимости.
- Освоить понятие замыканий и их использование в практических задачах.
Введение
Область видимости (Scope) в JavaScript — это концепция, определяющая доступность переменных и функций в разных частях кода. Замыкание (Closure) — это функция, вместе со всеми внешними переменными, которые ей доступны, что позволяет сохранять состояние между вызовами.
1. Область видимости
- Глобальная область видимости:
Все, что объявлено вне всех функций и блоков, находится в глобальной области видимости и доступно в любом месте программы.
var globalVar = "Я глобальная переменная";
- Локальная (функциональная) область видимости:
Переменные, объявленные внутри функции, доступны только в этой функции и во вложенных функциях.
function someFunction() {
var localVar = "Я локальная переменная";
console.log(globalVar); // Доступ к глобальной переменной
}
- Блочная область видимости:
С ES6 (ECMAScript 2015) введены ключевые слова `let` и `const`, которые позволяют объявлять переменные с блочной областью видимости (например, внутри циклов и условий).
if (true) {
let blockVar = "Я переменная с блочной областью видимости";
}
2. Замыкания
Замыкание создается, когда функция объявлена внутри другой функции, и имеет доступ к переменным внешней (родительской) функции. Это мощный механизм для инкапсуляции и сохранения состояния.
- Пример замыкания:
function outerFunction() {
var secret = "Я секретная переменная";
return function innerFunction() {
console.log("Секрет: " + secret);
};
}
var getSecret = outerFunction();
getSecret(); // Секрет: Я секретная переменная
3. Практическое использование замыканий
Замыкания часто используются для создания приватных переменных и функций, а также для реализации паттернов проектирования, таких как модули.
- Создание приватных переменных:
function createCounter() {
let count = 0;
return {
increment: function() { count += 1; console.log(count); },
decrement: function() { count -= 1; console.log(count); },
};
}
const counter = createCounter();
counter.increment(); // 1
counter.decrement(); // 0
Заключение
Область видимости и замыкания — фундаментальные концепции JavaScript, позволяющие эффективно управлять доступностью переменных и сохранять состояние в приложениях. Понимание этих механизмов открывает широкие возможности для создания мощных и гибких решений в веб-разработке.