(;;)的Javascript
我在uBlock源代码中发现了一些东西,但找不到任何解释或文档(;;)的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
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(;;)
是一种常见的习惯用法。这并不是“复杂难懂”,只是不熟悉而已。