Javascript范围问题无法在运行时事件访问变量

时间:2014-03-26 22:00:39

标签: javascript scope

我似乎无法访问调用函数 - myfunction在被调用函数method2中定义的param。知道我做错了什么。我有一种感觉,我磕磕绊绊,我不确定。

    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 ??
    }

1 个答案:

答案 0 :(得分: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