我看着這個:Returning values from nested functions in Javascriptjavascript變量作用域:從嵌套函數返回變量?
但它並沒有真正幫助我(或者我太愚蠢得到它)。
我的變量範圍有點關閉,我不明白爲什麼。我的alert()行爲不如預期。試圖在所有行上添加評論以解釋我在想什麼。
非常感謝任何意見/指針/答案!
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?
新的編輯: 娟的接受的答案是偉大的,但是是不是還有用的setTimeout()處理異步函數調用,並從根本上讓他們同步的方法嗎?如果讀過這些的人知道我想知道的答案。謝謝。
最有可能的是,因爲'function(stuff)'永遠不會運行。你的範圍看起來很好。這裏沒有任何東西證明設置'baby =「old」'的代碼行已經執行完畢。 'someVar'可能是錯誤的,或者'someAPI'永遠不會調用你傳遞它的函數。 –
好吧,我最初確實用alert()函數調用了這個函數。我認爲API函數的異步元素是解決方案。 – tim