- Теория
- Теория
Стань независимым
Мы выяснили, что переопределение глобальных переменных влияет на результат работы функции, которая эти переменные использует. Но, вообще-то, так делать не стоит — это не лучшая практика. Переопределение переменных, которые использует функция, может приводить к неожиданным последствиям и ошибкам в коде. Поэтому и существуют параметры, чтобы переиспользовать функции, явно передавая необходимые значения.
С параметрами всё легко и понятно, если мы хотим сразу вызвать функцию и получить результат её работы.
var eatDinner = function (food) {
console.log('Поел ' + food);
};
eatDinner('стейк');
// Выведет: Поел стейк
Что делать, если мы хотим зафиксировать в функции какое-то значение, а получить результат позже? Мы поступаем так с событиями: создаём функцию, используем внутри какие-то значения, но результат получаем не сразу, а когда совершится какое-то событие. Правда, не всегда всё идёт гладко, прям как у нас в галерее. Но мы на пути решения проблемы.
Вернёмся к примеру со школьником. Что, если школьник не хочет есть сельдерей? И вообще не хочет зависеть от еды, которая сейчас есть в столовой? Конечно, ему нужно взять еду с собой из дома! Тогда у него всегда будет в рюкзаке контейнер с едой. Он сможет в любой момент его достать и перекусить. Как реализовать это в коде?
var collectContainer = function () {
var food = 'макароны';
var eatDinner = function () {
console.log('Поел ' + food);
}
return eatDinner;
};
var schoolkid = collectContainer();
// В переменной функция eatDinner,
// которую вернула функция collectContainer
// Вызываем функцию eatDinner из переменной schoolkid
schoolkid();
// Выведет: Поел макароны
Не пугайтесь, в следующем задании мы подробно разберём, как эта запись работает и почему. А пока давайте убедимся, что этот код действительно выполняется так, как показано в примере.
- index.html
Вы перешли на другую страницу
Кликните внутри мини-браузера, чтобы поставить фокус в это окно.