作者TonyQ (沉默是金)
看板Ajax
標題Re: [問題] function 裡的 setTimeout 與 變數
時間Sun Oct 5 13:09:35 2008
※ 引述《s5846125 (陸奧鬼一)》之銘言:
: 又發現另一個狀況...
: function a() {
: var isWait = true;
: setTimeout("isWait=false", 2000);
: setTimeout("alert(isWait)", 3000);
: }
: function b() {
: var isWait = true;
: setTimeout("alert(isWait)", 3000);
: }
: 以上這兩個 function ,只差在第二行的 setTimeout(),
: 但是執行結果卻不相同,
: a() 會跳出訊息顯示「True」,
: 而 b() 會出現錯誤訊息「isWait is not defined」。
: 這樣是表示兩個 setTimeout() 裡面的變數是可以共用的?
: 還是有高手可以解說有其它的原因?
前者在eval的時候是設了一個全域變數 isWait ,
而後者讀到的時候 , 區域變數 isWait 已經不可見 , 所以出現undefined.
建議是採用function的方案來保存scope.
ex.
function b() {
var isWait = true;
setTimeout(function(){alert(isWait);}, 3000);
}
--
What do you want to have ? / What do you have?
從書本中,你可以發現我的各種興趣。
從CD中,你可以瞭解我所喜歡的偶像明星。
或許從文字你很難以瞭解一個人,但從物品可以。
My PPolis , My past. http://ppolis.tw/user/Tony
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 221.169.78.140
1F:→ TonyQ:這樣運用起來也會比較靈活. 10/05 13:09
2F:推 todau:推~~ 10/06 15:19
3F:推 s5846125:這樣可以用 setTimeout 限制 while() 的執行時間嗎? 10/07 01:07
4F:→ TonyQ:呃 我不太理解有什麼狀況需要用到這種情形欸 , 這種狀況 10/07 10:19
5F:→ TonyQ:不是通常都會直接用 Internal 了嗎? 10/07 10:20
6F:→ TonyQ:如果只是為了停住頁面 , 我覺得非常的沒有必要這麼作.-.-a 10/07 10:20