나는 이것을 보았다 : Returning values from nested functions in Javascript자바 스크립트 변수 범위 : 중첩 함수에서 변수를 반환 하시겠습니까?
그러나 그것은 정말로 나를 돕지 않았다 (또는 나는 그것을 얻는 데 너무 바보 같다).
내 변수 범위가 어떻게 든 꺼져 있고 그 이유를 알 수 없습니다. 내 알림()이 예상대로 작동하지 않습니다. 모든 줄에 의견을 추가하여 내가 생각하는 바를 설명하려고했습니다.
의견/포인터/답변 주셔서 감사합니다.
var g = {};/is a large object with all kinds of other stuff and functions in it
g.ding = function(){ // my problem function
var baby = 'young'; // i thought I set a local var here
if(someVar==true) { // standard issue if statement
someAPI.class(// using an API that uses a function as its attribute
function(stuff){ // my anonymous function
baby = 'old'; // setting the var to something
}
);
}
return baby; // returning the var
}
alert(g.ding()); // i expect it to say "old" but it keeps saying "young". why?
NEW EDIT : 후안의 허용 대답은 매우 중요하지만, 그들에게 동기 만드는 본질적으로 비동기 함수 호출을 처리하고 에서는 setTimeout()를 사용하는 방법도이 없다? 이걸 읽는 사람이 내가 알고 싶어하는 답을 알고 있다면. 감사.
'function (stuff)'이 절대로 실행되지 않기 때문에 가능성이 큽니다. 귀하의 범위가 잘 보입니다. 여기에'baby = "old"를 설정하는 코드 행이 이제까지 실행된다는 것을 증명하는 것은 없습니다. 'someVar'는 거짓이거나'someAPI'는 함수를 호출 할 수 없습니다. –
음, 원래이 함수가 호출되었다는 alert()을 확인했습니다. API 함수의 비동기 요소가 해결책이라고 생각합니다. – tim