(;;)的Javascript

(;;)的Javascript,javascript,Javascript,我在uBlock源代码中发现了一些东西,但找不到任何解释或文档 for (;;) { pos = content.indexOf(compiledFilter, pos); if ( pos === -1 ) { break; } // We need an exact match. // https://github.com/gorhill/uBlock/issues/1392 // https://github.com/gorhill/uBlock/i

我在uBlock源代码中发现了一些东西,但找不到任何解释或文档

for (;;) {
    pos = content.indexOf(compiledFilter, pos);
    if ( pos === -1 ) { break; }
    // We need an exact match.
    // https://github.com/gorhill/uBlock/issues/1392
    // https://github.com/gorhill/uBlock/issues/835
    const notFound = pos !== 0 &&
                     content.charCodeAt(pos - 1) !== 0x0A;
    pos += compiledFilter.length;
    if (
        notFound ||
        pos !== content.length && content.charCodeAt(pos) !== 0x0A
    ) {
        continue;
    }
}

for(;)
到底做了什么?它提供了什么好处?

for循环的
语法如下

for(initialization; condition; increment/decrement){
}
现在,如果你想跳过这三个步骤中的任何一个,你可以把它的空格留空,但要用分号。在上面的示例中,用户跳过了所有三个步骤

如前所述,它将是一个无限循环。如果在循环中不
中断
返回
,JavaScript代码(以及浏览器中的整个选项卡)将挂起,CPU使用率很高


注意:我不建议使用这样的东西。这是一种陌生的方式
while(true){…}
实现了相同的行为,但更易于阅读。

for
循环的
语法如下

for(initialization; condition; increment/decrement){
}
现在,如果你想跳过这三个步骤中的任何一个,你可以把它的空格留空,但要用分号。在上面的示例中,用户跳过了所有三个步骤

如前所述,它将是一个无限循环。如果在循环中不
中断
返回
,JavaScript代码(以及浏览器中的整个选项卡)将挂起,CPU使用率很高


注意:我不建议使用这样的东西。这是一种陌生的方式<代码>while(true){…}
实现了相同的行为,但更易于阅读。

这是一个无限循环,就像的
while(true)
一样。它是一个无限循环,就像的
while(true)
一样。“增量/减量”通常被概括为“更新”。“系统将挂起” — 不,进程或线程,而不是系统……这是因为这是一种不受鼓励的模式。@MarioVernari我同意不应该使用这种方式。在我看来,结尾的警告是不必要的。
for(;;)
是一种常见的习惯用法。这不是“复杂的技巧”,只是不熟悉。“增量/减量”通常被概括为“更新”。“系统将挂起” — 不,进程或线程,而不是系统……这是因为这是一种不受鼓励的模式。@MarioVernari我同意不应该使用这种方式。在我看来,结尾的警告是不必要的。
for(;;)
是一种常见的习惯用法。这并不是“复杂难懂”,只是不熟悉而已。