Re: [問題] function 裡的 setTimeout 與 變數

看板Ajax作者 (沉默是金)時間17年前 (2008/10/05 13:09), 編輯推噓2(204)
留言6則, 3人參與, 最新討論串3/6 (看更多)
※ 引述《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

10/05 13:09, , 1F
這樣運用起來也會比較靈活.
10/05 13:09, 1F

10/06 15:19, , 2F
推~~
10/06 15:19, 2F

10/07 01:07, , 3F
這樣可以用 setTimeout 限制 while() 的執行時間嗎?
10/07 01:07, 3F

10/07 10:19, , 4F
呃 我不太理解有什麼狀況需要用到這種情形欸 , 這種狀況
10/07 10:19, 4F

10/07 10:20, , 5F
不是通常都會直接用 Internal 了嗎?
10/07 10:20, 5F

10/07 10:20, , 6F
如果只是為了停住頁面 , 我覺得非常的沒有必要這麼作.-.-a
10/07 10:20, 6F
文章代碼(AID): #18w4mHO2 (Ajax)
討論串 (同標題文章)
文章代碼(AID): #18w4mHO2 (Ajax)