for (let current = 20; ; current = current + 1) {
if (current % 7 == 0) {
console.log(current);
break;
}
}
// → 21
我不理解该语法的工作方式。为什么会打印21?我正在阅读雄辩的js并偶然发现了这一点。
答案 0 :(得分:3)
电流从20开始。
let current = 20
它增加1
current = current + 1
一旦可被7整除(0表示无余数,则可被整除)
if (current % 7 == 0)
打印电流(21)-> 21%7 = 0并停止
console.log(current);
break;
答案 1 :(得分:1)
首先,您必须知道%符号的含义。
%用于模量-表示余数。
例如:-
5%2 --- // (5/2) here remainder is 1 so result is 1.
现在转到实际问题:-
LOOP
for (let current = 20; ; current = current + 1) {
if (current % 7 == 0) {
console.log(current);
break;
}
}
第一轮
1)当前值为20
2)if(current%7 == 0)-定义条件,将“ current”除以7(current / 7)时的余数,这里将解析为
a) (20%7 = 6 (remainder))
b) if(6 == 0) -- false
3)跳过if块
4)现在,当前=当前+1 //当前= 21
第二回合
1)当前值为21
2)if(当前%7 == 0)
解析为---
a) (21%7 = 0 (remainder))
b) if(0 == 0) -- true
3)进入if块
4)在控制台上打印current的值,即21
5)执行break语句并终止循环
---结束程序---
答案 2 :(得分:0)
空语句(即,只是一个半冒号)在javascript中是有效的语句。这只是意味着在for循环的每次循环迭代开始时都不会检查任何条件。
现在,如果我们看一下该循环的作用,我们可以看到在第一次迭代中,current = 20,因此内部条件失败了(因为20不能被7整除)。
发生下一次迭代,电流增加到21,现在内部条件通过(21 可被7整除)。因此,我们打印21并跳出循环。
答案 3 :(得分:0)
for
括号中的三个部分是:
所以:
for(a;b;c) {
d
}
...等效于:
a;
while(b) {
d;
c;
}
...具有奖励功能,如果a,b,c,d中的任何一个缺失,则b
缺失会“起作用”,等同于true
。
所以:
int i=0;
for(;i<10;i++) {
println('hello');
}`
...等效于:
int i=0;
while(i<10) {
println('hello');
i++;
}
并且:
for(int i=0;;i++) {
println('hello');
}`
...等效于:
int i=0;
while(true) {
println('hello');
i++;
}
...这是一个无限循环,因为while(true)
。
并且:
for(int i=0;i<10;) {
println('hello');
}`
...等效于:
int i=0;
while(i<10) {
println('hello');
}
(...这是一个无限循环,因为i
永远不会达到10)
并且:
for(;;) { println('hello'); }
是:
while(true) { println('hello'); }