在开发在 JQuery 上运行的语法荧光笔时,我发现了一个相当奇怪的问题。我创建的一个函数似乎几乎破坏了它所在的任何循环。但是,在循环之外,它工作得非常好。
有问题的功能是:
function findQuoted(s)
{
var Quote = 0;
var F = 0;
var L = 0;
var Strings = Array();
for(i = 0;i < s.length;i++)
{
if(s.charAt(i) == '"' && Quote == 0)
{
Quote = 1;
F = i;
}
else if(s.charAt(i) == '"' && Quote == 1)
{
Strings[Strings.length] = s.substring(F, i + 1);
Quote = 0;
}
}
return Strings;
}
如果这在任何循环中执行,出于某种奇怪的原因,循环就会停止工作,并且只运行一次。
在此示例中,警报消息在继续程序之前仅显示一次。请记住,程序永远不会卡住或无响应,循环只是停止运行。
for(i = 0;i < 5;i++)
{
alert(findQuoted('"Test" this is a test "test" another test "TEST"'));
alert('test');
}
在正常情况下,如果不使用此函数,则此循环中的所有内容都会执行 6 次。但是,由于此函数存在于循环中,因此此函数中的所有内容都只执行一次。