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;
}
これが任意のループで実行されると、奇妙な理由でループが機能しなくなり、1 回だけ実行されます。
この例では、プログラムを続行する前に警告メッセージがそれぞれ 1 回だけ表示されます。プログラムがスタックしたり応答しなくなったりすることはなく、ループが機能しなくなることを覚えておいてください。
for(i = 0;i < 5;i++)
{
alert(findQuoted('"Test" this is a test "test" another test "TEST"'));
alert('test');
}
通常のシナリオでは、この関数を使用しないと、このループ内のすべてが 6 回実行されます。ただし、この関数がループ内に存在するため、この関数内のすべてが 1 回しか実行されません。