我確信我正在做這種各種各樣的錯誤,但我有以下函數返回'undefined'在控制檯,即使它可以console.log()所需的值來自同一地方在函數在代碼中評論。javascript函數返回undefined
var tags = [4, 5];
console.log(getTagNames(tags)); // 'undefined'
function getTagNames(tagArray) {
$.getJSON('js/tags.json', function(data) {
for (var i in tagArray) {
tagArray[i] = tagArray[i].toString();
var val = tagArray[i];
for (var t in data) {
var tag = data[t];
var tagName = tag.alias;
var tagId = tag.id;
if (val === tagId) {
tagArray[i] = tagName;
}
};
}
console.log(tagArray); // output ["foo", "bar"]
return tagArray;
});
}
另一個奇怪的是,在瀏覽器中運行此代碼後,我可以鍵入「標籤」到瀏覽器控制檯,它給了我正確的結果["foo", "bar"]
。然而,當我嘗試使用標籤變量(即:文本值的元素等),它不起作用... 什麼給? JavaScript不是我的第一語言,所以我對它的行爲有些困惑。我只是不明白。
我已經閱讀了幾乎所有的「可能已經有我的答案的問題」,但是提供了那些我無法弄清楚如何應用於我的功能的答案。
注:
- 的JSON距離的Joomla(3.1)標籤表。
- 我能夠檢索數據。
- val === tagId條件工作正常。
- 我喜歡爆米花。
success
處理器的getJSON
其中,第一,不期待任何回報價值,二是異步發生的
'getTagNames' **沒有** return語句。在你的問題中,帶有'return'語句的唯一函數是你傳遞給'getJSON'的匿名函數。 – Quentin