功能循环问题

NAM*_*E__ 4 javascript jquery loops function

在处理在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;
}
Run Code Online (Sandbox Code Playgroud)

http://pastebin.com/2wi4Tnn8

如果在任何循环中执行此操作,由于某些奇怪的原因,循环就会停止工作,并且只运行一次.

在此示例中,警报消息在继续执行程序之前仅显示一次.请记住,程序永远不会卡住或无响应,循环停止运行.

for(i = 0;i < 5;i++)
{
    alert(findQuoted('"Test" this is a test "test" another test "TEST"'));
    alert('test');
}
Run Code Online (Sandbox Code Playgroud)

在正常情况下,如果不使用此函数,则此循环中的所有内容都将执行6次.但是,由于此函数存在于循环中,因此此函数中的所有内容仅执行一次.

Dek*_*kku 9

使用

for(var i = 0;i < 5;i++)
Run Code Online (Sandbox Code Playgroud)

否则你正在使用i你用来在你的另一个循环中迭代的相同变量.

  • @ user2577669注意,变量未在该循环的范围内声明,而是循环所在的函数.Javascript具有功能范围.但是,如果不使用`var`关键字,则使用全局上下文. (2认同)