问题描述:
举个简单的案例:求整数1~100的累加值,但要求跳过所有个位为3的数。
var sum = 0,i=1;
while(i<=100){
if(i % 10 == 3){
continue;
}
sum+=i;
i++;
console.log(i+","+sum);
}
结果浏览器一直在转,得不出答案;
原因分析:
if(i % 10 == 3){
continue;
}
continue;代表跳过本次循环,在while循环里,我们i++是放在continue之后执行,就会导致,如i=33时,跳出本次循环,继续执行下一次循环;但没有执行i++;i一直都是33进入循环,就会使js陷入死循环中。
解决方案:
第一种:在continue前加i++;
var sum = 0,i=1;
while(i<=100){
if(i % 10 == 3){
/*☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
一定要加i++这句话,不然跳过本次循环,i没有增加
,会一直不变从而陷入死循环!!!!!!!!!!!
而且要放在continue前面
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆*/
i++;
continue;
}
sum+=i;
i++;
console.log(i+","+sum);
}
第二种,把i初始赋值为0,i++提前到循环内第一行,这样,sum+=i在i++和continue之后,则是从加1开始,把除个位数为3的数相加
var sum = 0,i=0;
while(i<=100){
i++;
if(i % 10 == 3){
continue;
}
sum+=i;
console.log(i+","+sum);
}