2011-05-11 6 views
0

내가 원하는 것을 할 수 있습니까? 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; 
      } 

     }); 
    } 
+2

당신은 질문을 다시 말해야합니다 당신의 노력을 모릅니다 ... 당신은 오류가 있습니까? – mcgrailm

+0

예. 함수 내에서 다른 함수를 호출 할 수 있습니다. – Ibu

+0

그대로 오류가 발생합니다. _box.click (function() {각 _hold 요소 또는 객체 또는 해당 객체가 호출되는 곳마다 changeEl()을 호출하는 루프가 필요합니다. – josh

답변

1

당신이 뭘하려는 건지 아니 생각도하지만, 또 다른 하나의 내부 함수를 정의 괜찮아 경우에 당신이 요구하는 경우, 물론, 그것은이다. 중첩 된 함수는 정의 된 함수 외부에서 호출 할 수 없다는 점에 유의하십시오.

0

함수를 함수 내에 중첩시킬 수 있습니다. 중첩 된 (내부) 함수는 포함 된 (외부) 함수에 대해 전용입니다. 또한 클로저를 형성합니다.

클로저 식 ( 표현식을 "폐쇄"는) 그 변수들을 결합하는 환경 함께 무료 변수를 가질 수있다 (일반적 함수)이다. reference

중첩 함수가 고정이기 때문에,이 중첩 기능이 포함 된 함수의 인수와 변수 "상속"할 수 있다는 것을 의미한다. 즉, 내부 함수에는 외부 함수의 범위가 포함됩니다.

는 요약하자면

  • 내부 함수는 외부 함수 문에서 액세스 할 수있다.
  • 내부 함수는 클로저를 형성합니다. 내부 함수는 외부 함수의 인수와 변수를 사용할 수 있지만 외부 함수는 내부 함수의 인수와 변수를 사용할 수 없습니다. 내부 함수는 클로저를 형성하기 때문에

    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 
    

다음 예는 중첩 된 기능을 보여줍니다

관련 문제