2011-05-11 122 views
0

是否可以做我想要的?該changeEl()功能也是fadeGall()Javascript函數調用問題

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 2011-05-11 16:51:46

+0

是的,你可以從一個函數 – Ibu 2011-05-11 16:55:16

+0

中調用另一個函數,因爲它現在我沒有錯誤。我需要在_box.click(function(){)內部的某種循環,它調用每個_hold元素或對象上的changeEl()或任何被調用的對象。 – josh 2011-05-11 17:04:37

回答

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