而(1)在JavaScript中

而(1)在JavaScript中,javascript,ecmascript-6,eslint,Javascript,Ecmascript 6,Eslint,我正在将一些es5转换为es6,并使用eslint,遇到以下问题 while(1){ // Do something } 我有一个线头错误 意外常量条件无常量条件 但我不确定这到底是怎么回事。它驻留在for循环中 for(i = 0; i< arr.length; i++) { while(1) { idx = _p.indexOf(arr[i], idx); if (idx == -1) break; } } 但是没有文档,也无法在线找到while1到底做

我正在将一些es5转换为es6,并使用eslint,遇到以下问题

while(1){
  // Do something
}
我有一个线头错误

意外常量条件无常量条件

但我不确定这到底是怎么回事。它驻留在for循环中

for(i = 0; i< arr.length; i++) {
  while(1) {
    idx = _p.indexOf(arr[i], idx);
    if (idx == -1) break;
  }
}

但是没有文档,也无法在线找到while1到底做了什么,以及如何编写替代方案来消除这个lint错误。

这只是一个无限循环。它循环直到1不是真的。 如您所见,在这个循环中有一个条件和一个中断,因此当条件为真时,无限循环将结束,因此中断

while(1) { //Cycle forever...
    idx = ...;
    if (idx == -1) break; //...until idx == -1!
}

这只是一个无限循环。它循环直到1不是真的。 如您所见,在这个循环中有一个条件和一个中断,因此当条件为真时,无限循环将结束,因此中断

while(1) { //Cycle forever...
    idx = ...;
    if (idx == -1) break; //...until idx == -1!
}
while1创建一个永远运行的循环,除非使用break关键字显式停止它,否则它永远不会终止。如果在执行过程中发生错误,循环也将停止。这些结构可能非常危险,会使您的pc/浏览器崩溃,这就是为什么jslint会发出警告

另一种写这篇文章的方式是whiletrue或用于

while1创建一个永远运行的循环,除非使用break关键字显式停止循环,否则循环永远不会终止。如果在执行过程中发生错误,循环也将停止。这些结构可能非常危险,会使您的pc/浏览器崩溃,这就是为什么jslint会发出警告

另一种写这篇文章的方式是whiletrue或用于

此规则不允许以下测试条件中的常量表达式: if、for、while或do…while语句 ?:三元表达式

此规则的错误代码示例:

if (false) {
    doSomethingUnfinished();
}

if (void x) {
    doSomethingUnfinished();
}

for (;-2;) {
    doSomethingForever();
}

while (typeof x) {
    doSomethingForever();
}

do {
    doSomethingForever();
} while (x = -1);

var result = 0 ? a : b;
杜:whiletrue

或者您可以只禁用:/*eslint禁用无常量条件*/

此规则不允许以下测试条件中的常量表达式: if、for、while或do…while语句 ?:三元表达式

此规则的错误代码示例:

if (false) {
    doSomethingUnfinished();
}

if (void x) {
    doSomethingUnfinished();
}

for (;-2;) {
    doSomethingForever();
}

while (typeof x) {
    doSomethingForever();
}

do {
    doSomethingForever();
} while (x = -1);

var result = 0 ? a : b;
杜:whiletrue


或者您可以禁用该选项:/*eslint disable no constant condition*/

您可以使用do。。。而在最后循环检查,因为这就是你要做的

for (i = 0; i< arr.length; i++) {
    do {
        idx = _p.indexOf(arr[i], idx);
    } while (idx !== -1)
}

你可以用do重写代码。。。而在最后循环检查,因为这就是你要做的

for (i = 0; i< arr.length; i++) {
    do {
        idx = _p.indexOf(arr[i], idx);
    } while (idx !== -1)
}
环路 指令重复n次

While循环 而需要一个条件和一个布尔值来处理循环。如果条件为true,则执行,否则不执行任何操作

在这种情况下,条件为1并转换为true

函数getBooleanValuevalue{ 返回!!值 } console.log'1被强制转换为:',getBooleanValue1 console.log“0被强制转换为:”,getBooleanValue0A循环 指令重复n次

While循环 而需要一个条件和一个布尔值来处理循环。如果条件为true,则执行,否则不执行任何操作

在这种情况下,条件为1并转换为true

函数getBooleanValuevalue{ 返回!!值 } console.log'1被强制转换为:',getBooleanValue1
console.log“0被强制转换为:”,getBooleanValue0while1将持续运行,直到您脱离它。这是一个做一段时间的速记。所以它说,当idx不等于-1时,总是运行这个循环。while1只是另一个肮脏的持续方法while1的可能重复将持续运行,直到你打破它。这是一个做一段时间的速记。所以它说,当idx不等于-1时,总是运行这个循环。而1只是另一个肮脏的连续性方法。它的可能副本确实终止。。。当你休息的时候。哦,对不起,我是在python模式下@PaulStrobach除了中断外,循环中抛出的任何错误也会导致循环中断。它确实会终止。。。当你休息的时候。哦,对不起,我是在python模式下@PaulStrobach除了中断之外,循环中抛出的任何错误也会导致循环中断。我发现了这篇关于堆栈溢出的帖子,其中谈到了whiletrue,它说这些关于无限循环的规则是在生成器出现之前制定的,甚至没有意识到光纤。你应该禁用它。我发现了这篇关于堆栈溢出的帖子,它谈到了whiletrue,它说这些关于无限循环的规则是在生成器出现之前制定的,甚至没有意识到光纤。你应该禁用它。但是在每次编译之后更改编译后的代码不是一项很大的工作吗?源代码和编译后的代码必须是相等的,而对于您的解决方案来说,这将是不相等的。此外,在下一次编译中,更改将消失,您必须再次更改。。错误的想法每次es6文件编译es5文件都将被覆盖,您必须再次修改es5文件。但每次编译后更改编译代码不是很费力吗?源代码和编译代码必须相等,而您的解决方案将不相等。另外w 在下一次编译中,更改将消失,您必须再次更改。。错误的想法每次es6文件编译es5文件时都将被覆盖,您必须再次修改es5文件。