Я уверен, что делаю это все виды неправильно, но у меня есть следующая функция, возвращающая «undefined» в консоли, хотя она может console.log() запрашиваемые значения из одного и того же места в как прокомментировано в коде.javascript function return 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 от таблицы (3.1) теги Joomla.
- Я могу получить данные.
- Условие val === tagId условно работает правильно.
- Мне нравится попкорн.
'getTagNames' ** не имеет ** оператора' return'. Единственная функция с оператором 'return' в вашем вопросе - анонимная функция, которую вы передаете' getJSON'. – Quentin