var text = "dave kdfkdf dave kdfkdfffff dave";
var myName = "dave";
var hits = new Array();

var counter;
var nameCounter;


for (counter = 0; counter <= text.length; counter++){
    if (text[counter] === myName[0]) {
        for (nameCounter=counter; nameCounter < (nameCounter+myName.length); nameCounter++) {
            hits.push(text[nameCounter]);
        }
    }
}


上面的代码不起作用,但是当我将第二个循环的条件更改为:

nameCounter < (counter+myName.length);


然后它确实起作用。

你能解释为什么吗?谢谢 :)

最佳答案

简单的数学。
我知道myName可以是任何名称,具有任何长度,但是让我们继续使用“ dave”和4的长度,并将myName.length更改为4的硬编码值:

我们将以下内容作为循环的条件。它永远不会虚假,因此永远不会停止* ...

nameCounter < nameCounter + 4


*好,直到溢出或内存不足等。

10-06 07:37