2016-10-09 42 views
0

我有這段代碼。本地變量在回調中不可訪問 - javascript

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

但映射變量不能在函數內部訪問。

我有一個類似的代碼別的地方

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

和標籤是這裏訪問,我能夠使用它。

請解釋一下爲什麼會發生這種情況?

+0

你如何確定函數裏面沒有'mapping'?你有沒有嘗試過使用它?和你的函數參數順序是錯誤的,'_.each()'不是jQuery。 – Thomas

+0

我假設_.each()是underscore.js。我試過你的頂部片段,並能夠訪問函數內的映射變量。 –

回答

0

這裏的問題映射變量不在函數代碼塊中聲明。

在調試模式下,如果您使用類似於這裏的回調函數,您需要在函數中聲明它,因此調試器會將其保存爲局部變量。

這樣:

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

只是甚至在console.log()函數寫變量名,調試就會知道他的局部變量,然後你將不得不變量本身的訪問。