【发布时间】:2017-02-22 12:24:35
【问题描述】:
我有一段带有 while 循环的代码,我想通过 setTimeout() 来停止它。但这似乎是一个无限循环,永远不会触发 setTimeout()。如果我删除 while 循环,超时会正确触发。请问有什么问题吗?
$(document).ready(function()
{
var i = 0, s = false;
setTimeout( function()
{
s = true;
console.log( "Timeuot!!!" );
console.log( "s value is " + s );
}, 1000 );
while( s === false )
{
console.log( "this is while and s is " + s );
i++;
}
console.log( "iterations: " + i );
});
【问题讨论】:
-
@Quentin
s里面的 setTimeout 是在全局范围内设置的。为什么我错了? -
@RoyiNamir — 传递给
setTimeout的函数在另一个函数中定义。它可以访问该函数的范围。由于该范围内有一个非全局的s,因此它会访问该s。 -
@RoyiNamir h s 在 setTimeout 中是封闭范围之一,因此在上面声明并定义了几行。
-
@Quentin 哦,伙计,你是对的。我的错。删除。
标签: javascript while-loop