JavaScript While循环多条件问题:代码无输出或仅输出10
问题排查:两段循环代码的问题分析
咱们来逐个拆解这两段代码的问题,一眼就能看出为啥要么只输出10要么完全没输出了:
第一段代码的问题
先看这段代码:
var num2 = 10; while (num2 >= 10 && num2 <= 40 && num2%2===0){ console.log(num2); num2++; }
这里的循环条件把num2%2===0也加进去了,第一次循环时num2是10,满足所有条件,输出10,然后num2变成11。这时候num2%2===0不成立(11是奇数),循环直接终止了,所以只会输出一次10,之后就停了。
第二段代码的问题
再看这段:
var num2 = 10; while (num2 >= 10 && num2 <= 40){ if (num2%2===0){ console.log(num2); num2++; } }
这次循环条件没问题,但**num2++只在if条件满足的时候执行**。第一次输出10后num2变成11,接下来进入循环,11是奇数,if条件不满足,所以不会执行num2++,num2一直保持11,循环条件11 >=10 && 11 <=40永远成立,直接陷入死循环!而且因为11不是偶数,不会输出任何内容,看起来就像程序没反应一样。
修复方案
如果你的需求是输出10到40之间的所有偶数,正确的写法应该是把num2++放在if外面,不管是不是偶数都让num2递增,这样就不会死循环了:
var num2 = 10; while (num2 >= 10 && num2 <= 40){ if (num2%2===0){ console.log(num2); } num2++; // 移到这里,每次循环都递增 }
或者更简洁的,直接让num2每次加2,这样不用判断奇偶:
var num2 = 10; while (num2 <= 40){ console.log(num2); num2 += 2; }
内容的提问来源于stack exchange,提问作者Kaietan Paul
相关产品推荐
相关产品推荐

