javascript空循环体

时间:2013-02-04 05:56:41

标签: javascript

我正在通过eloquent 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吗?我在这里缺少什么?

2 个答案:

答案 0 :(得分: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++) ;

答案 1 :(得分:0)

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

for (var current = 20; current % 7 != 0; current++) {
    console.log('current value is ' + current ' +
    ' and the mod result is ' + current % 7);
}