1

我正在使用雄辩的 javascript,但我不明白这段代码

for (var current = 20; current % 7 != 0; current++)
  ;
console.log(current);

它声明它检查大于 20 且可被 7 整除的第一个数字,console.log()并将产生 21。

但是我读到从 20 开始,检查current除以 7 是否没有余数,看看我们什么时候打破循环。但马上 20 mod 7 == 6 意味着它不等于 0 或 ( 20 % 7 != 0)。

那么 for 循环不应该立即中断并console.log(current)产生 20 吗?我在这里想念什么?

4

2 回答 2

3

只要满足条件,循环就会继续。

20 % 7 != 0 // 6 != 0 is true, so condition is met and loop continues

21 % 7 != 0 // 0 != 0 is false, so condition fails and loop halts

“...检查current除以 7 是否没有余数”

不,它是“检查current除以 7 是否没有余数”

我认为消极的条件是把你扔了。基本上,您需要询问条件是否为真陈述。

所以如果我是条件,你是循环,我说“六不等于零”,你会说“那是真的”,所以你会同意让循环继续。

但是,如果我说“零不等于零”,你会说“那是假的”,然后停止循环。


更明确的条件是“检查current除以 7 是否有余数”。没有双重否定,所以可以写成:

for (var current = 20; current % 7; current++) ;

或作为:

for (var current = 20; current % 7 > 0; current++) ;
于 2013-02-04T05:58:26.863 回答
0

这里没有错。只需将;行更改为此行,您就会明白:

for (var current = 20; current % 7 != 0; current++) {
    console.log('current value is ' + current ' +
    ' and the mod result is ' + current % 7);
}
于 2013-02-04T06:01:19.023 回答