Вопрос о вызове функции Javascript

#javascript #jquery

#javascript #jquery

Вопрос:

Возможно ли сделать то, что я хочу? changeEl() функция также находится в fadeGall()

     function initOpen(){

        $('ul.piple-holder > li > a, ul.work-holder > li > a').each(function(){

            var _box = $(this);

            _box.click(function(){

                //SOME CODE HERE TO RUN changeEl(0); on each _hold 
                //element from fadeGall()

            });

        });

    }


    function fadeGall(){

        var _hold = $('div.work-info');

        _hold.each(function(){

            var _hold = $(this);

            function changeEl(_ind){
                return;
            }

        });
    }
  

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

1. вам нужно перефразировать вопрос, я не знаю, что вы пытаетесь сделать… вы получаете ошибки?

2. да, вы можете вызвать другую функцию изнутри функции

3. на данный момент я не получаю ошибок. Мне нужен какой-то цикл внутри _box.click(функция(){, который вызывает changeEl() для каждого элемента _hold или объекта или как бы он ни назывался.

Ответ №1:

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

Ответ №2:

Вы можете вложить функцию в функцию. Вложенная (внутренняя) функция является частной по отношению к содержащей ее (внешней) функции. Это также формирует замыкание.

Замыкание — это выражение (обычно функция), которое может иметь свободные переменные вместе со средой, которая связывает эти переменные (которая «закрывает» выражение). ссылка

Поскольку вложенная функция является замыканием, это означает, что вложенная функция может «наследовать» аргументы и переменные содержащей ее функции. Другими словами, внутренняя функция содержит область видимости внешней функции.

Подводя итог:

  • Доступ к внутренней функции возможен только из инструкций во внешней функции.
  • Внутренняя функция образует замыкание: внутренняя функция может использовать аргументы и переменные внешней функции, в то время как внешняя функция не может использовать аргументы и переменные внутренней функции.

В следующем примере показаны вложенные функции:

 function addSquares(a,b) {
   function square(x) {
      return x * x;
   }
   return square(a)   square(b);
}
a = addSquares(2,3); // returns 13
b = addSquares(3,4); // returns 25
c = addSquares(4,5); // returns 41
  

Поскольку внутренняя функция образует замыкание, вы можете вызвать внешнюю функцию и указать аргументы как для внешней, так и для внутренней функции:

 function outside(x) {
   function inside(y) {
      return x   y;
   }
   return inside;
}
fn_inside = outside(3);
result = fn_inside(5); // returns 8
result1 = outside(3)(5); // returns 8