在回调内无法访问的局部变量--javascript

时间:2016-10-09 02:18:59

标签: javascript jquery

我有这段代码。

var mapping  = {};
_.each(labels,function(i,label){
    debugger;
});

但是在函数内部无法访问映射变量。

我在其他地方有类似的代码

var labels = {};
_.each(arrOfFields, function(element,index){
    labels[prefix+element.fcnbb] = element.UI.label;
});

和标签可在此处访问,我可以使用它。

请解释我为什么会这样?

1 个答案:

答案 0 :(得分:0)

此处的问题是映射变量未在功能代码块中声明。

在调试模式下,如果你使用了像这里的回调函数,你需要在函数中声明它,所以调试器会将它保存为局部变量。

这样:

var mapping  = {};
_.each(labels,function(i,label){
    console.log(mapping);  // here
    debugger;
});

即使在console.log()函数中也只是编写变量名,调试将知道他的局部变量,然后你就可以访问变量了。