我确信我正在做这种各种各样的错误,但我有以下函数返回'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