【发布时间】:2013-06-26 15:45:16
【问题描述】:
我确定我做错了,但我有以下函数在控制台中返回“未定义”,即使它可以 console.log() 来自函数中相同位置的所需值,如注释代码。
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"]。但是,当我尝试使用 tags 变量(即:元素的文本值等)时,它不起作用......
是什么赋予了? JavaScript 不是我的第一语言,所以我对它的行为方式有点困惑。我只是不明白。
我已经阅读了几乎所有“可能已经有我的答案的问题”,但提供的答案是那些我无法弄清楚如何应用于我的函数的答案。
注意:
- JSON 来自 Joomla(3.1) 标签表。
- 我能够检索数据。
- val === tagId 条件工作正常。
- 我喜欢爆米花。
【问题讨论】:
-
getTagNames没有return声明。您的问题中唯一带有return语句的函数是您传递给getJSON的匿名函数。
标签: javascript function return undefined