나는 모든 종류의 잘못하고있다 확신합니다.하지만 콘솔에서 동일한 위치에서 원하는 값을 console.log() 수있는 다음과 같은 함수를 'undefined'반환합니다. 함수가 코드에 주석으로 표시됩니다. javascript 함수는 정의되지 않은 반환합니다
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는 제 첫 번째 언어가 아니므로 JavaScript가 작동하는 방식을 약간 혼동합니다. 나는 이해하지 못한다.
"이미 내 대답이있을 수있는 질문"을 거의 읽었지만 내 기능에 적용하는 방법을 알 수없는 경우 대답이 제공되었습니다.
참고 : json으로는 줌라 (3.1) 태그 테이블에서입니다
- .
- 데이터를 검색 할 수 있습니다.
- val === tagId 조건부가 올바르게 작동하고 있습니다.
- 나는 팝콘을 좋아한다. 당신의
getTagNames
가 실행이 완료된 후에 방법 -
'getTagNames' **에는 ** return 문이 없습니다. 질문에'return' 문을 사용하는 유일한 함수는'getJSON'에 전달하는 익명 함수입니다. – Quentin