作者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