我正在通过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吗?我在这里缺少什么?
答案 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);
}