<rmcreative>

RSS

Прячем флаги в замыкания

23 июня 2015

window.addEventListener('click', function () {
    var i = 0;
    return function () {
        window.alert('You\'ve clicked it ' + (++i) + ' time(s).');
    };
}());

Благодаря замыканиям JavaScript позволяет не выносить флаги за функцию-обработчик и тем самым не засорять области видимости уровнями выше.

Выполнить данный кусочек кода можно в консоли любого браузера. Для демонстрации щёлкайте по любому месту открытой страницы.

Кстати, я выкладываю этот и другие интересные кусочки кода на gostash.ru

Комментарии RSS

  1. №9895
    Web Design Dubai
    Web Design Dubai 11.07.2015, 13:12:51

    Если я не ошибаюсь - click ждет в ответе boolean, а тут отдается void. Поведение браузера будет предсказуемым?

  2. №9899
    Sam
    Sam 12.07.2015, 0:12:48

    Вполне. Событие всплывёт вверх по иерархии, обработчик по умолчанию отработает.

  3. №9955
    Karen
    Karen 31.08.2015, 14:49:31

    А так?

    +function(){
      var i = 0;
      window.addEventListener('click', function () {
          return window.alert('You\'ve clicked it ' + (++i) + ' time(s).');
      }());
    }();
  4. №9956
    Sam
    Sam 31.08.2015, 20:12:24

    А так мы намешали и логику обработчика и навешивание его на событие.

  1. Почта опубликована не будет.

  2. Можно использовать синтаксис Markdown или HTML.

  3. Введите ответ в поле. Щёлкните, чтобы получить другую задачу.