2014-03-26 61 views
-1

我似乎無法訪問由調用函數定義的參數 - myfunction在被調用的函數method2中。任何想法我做錯了什麼。我有一種感覺,我正在陷入我不確定的倒閉之中。Javascript範圍問題在運行時無法訪問變量事件

function myfunction(){ 
     var config = { alpha: 1, beta:2, charlie:3} 
     $(someelement).on('event', function(a,b,config){ 
      //a and b are published established params of the event im using 
      //config is something im adding 
      method2(a, b, config); 
     }); 
    } 
    function method2(a,b,c){ 
     //param c is undefined why ?? 
    } 

回答

2

因爲你在你的聲明函數參數config

$(someelement).on('event', function(a,b,config){ 
// Here --------------------------------^  
    method2(a, b, config); 
}); 

那陰影(隱藏)的config您在封閉函數聲明。如果刪除它:

$(someelement).on('event', function(a,b){ 
// Removed ----------------------------^  
    method2(a, b, config); 
}); 

參數不再陰影(隱藏)變量。

問題是該函數的第三個參數也被命名爲config,並且當它沒有通過時(因爲jquery on沒有三個參數),它被設置爲undefined