За последние 24 часа нас посетили 16739 программистов и 1598 роботов. Сейчас ищут 1292 программиста ...

Что это? Как это работает?

Тема в разделе "JavaScript и AJAX", создана пользователем виталий032, 23 ноя 2017.

  1. виталий032

    виталий032 Активный пользователь

    С нами с:
    31 янв 2014
    Сообщения:
    227
    Симпатии:
    30
    Адрес:
    Владивосток
    PHP:
    1. fnDelay = (function(){
    2.     var timer = 0;
    3.     return function(callback, ms){
    4.         clearTimeout(timer);
    5.         timer = setTimeout(callback, ms);
    6.     };
    7. })();
    Что значит (функция)(); ?
    Непонятно, почему передаваемые переменные видны в return function(callback, ms); ?
    Как это работает не понимаю.

    Помогите, пожалуйста.

    PHP:
    1. document.getElementById('search').addEventListener('keyup', function() {
    2.     fnDelay(function() {
    3.         search();
    4.     }, 200);
    5. });
     
  2. xoptov

    xoptov Активный пользователь

    С нами с:
    13 июл 2017
    Сообщения:
    43
    Симпатии:
    7
    (function(){})() - это вызов анонимной функции;
    fnDelay - получает результат работы вызова анонимной функции;
    Результатом работы анонимной функции является тоже функция принимающая два аргумента callback и ms :)
    В самой последней вложенной функции устанавляваеться таймер по истечению которого вызовется callback.
     
    виталий032 нравится это.
  3. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.593
    Симпатии:
    362
    виталий032 нравится это.