• Теория
  • Теория

Стань независимым

Мы выяснили, что переопределение глобальных переменных влияет на результат работы функции, которая эти переменные использует. Но, вообще-то, так делать не стоит — это не лучшая практика. Переопределение переменных, которые использует функция, может приводить к неожиданным последствиям и ошибкам в коде. Поэтому и существуют параметры, чтобы переиспользовать функции, явно передавая необходимые значения.

С параметрами всё легко и понятно, если мы хотим сразу вызвать функцию и получить результат её работы.

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
HTML
HTML

Вы перешли на другую страницу

Кликните внутри мини-браузера, чтобы поставить фокус в это окно.

100%
Бабушка Кекс

Притормози, дружище

Проходить вызовы части «Знакомство с событиями» тренажёра «Погружение в браузерный JavaScript» можно после регистрации и оформления подписки.