精華區beta Ajax 關於我們 聯絡資訊
※ 引述《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
TonyQ:這樣運用起來也會比較靈活. 10/05 13:09
todau:推~~ 10/06 15:19
s5846125:這樣可以用 setTimeout 限制 while() 的執行時間嗎? 10/07 01:07
TonyQ:呃 我不太理解有什麼狀況需要用到這種情形欸 , 這種狀況 10/07 10:19
TonyQ:不是通常都會直接用 Internal 了嗎? 10/07 10:20
TonyQ:如果只是為了停住頁面 , 我覺得非常的沒有必要這麼作.-.-a 10/07 10:20