<script type="text/JavaScript"> var mynum =new Array(70,80,66,90,50,100,89,99,102,23,60);//定义数组mynum并赋值 var i=0; while(i<mynum.length) { if(mynum[i]<60) { document.write("成绩"+mynum[i]+"不及格,不用循环了"+"<br>"); } document.write("成绩:"+mynum[i]+"及格,继续循环"+"<br>"); i=i+1; } </script>
结果:
我还没有加break停止循环,想试试不加会事什么效果。
为什么明明小于60的数却会出现两个,在判断mynum[i]>60不成立后,不应该是不显示这行输出吗,为什么还是显示了,感觉没有进行判断。难道跟break有关系?
没毛病啊?
<script type="text/JavaScript"> var mynum =new Array(70,80,66,90,50,100,89,99,102,23,60);//定义数组mynum并赋值 var i=0; while(i<mynum.length) { if(mynum[i]<60)// 判断mynum[i]是否不及格,是则输出下面代码,不是则不输出。 { document.write("成绩"+mynum[i]+"不及格,不用循环了"+"<br>"); } // 你问题出现在这下面,你这里是输出所有人的成绩,不管及不及格都是输出的 // 你上面不及格的代码执行了一次,这里再执行一次而已 document.write("成绩:"+mynum[i]+"及格,继续循环"+"<br>"); i=i+1;// 循环条件更新 } </script>
老铁懂了吧?
<script type="text/JavaScript">
var mynum =new Array(70,80,66,90,50,100,89,99,102,23,60);//定义数组mynum并赋值
var i=0;
while(i<mynum.length)
{
if(mynum[i]<60)
{
document.write("成绩"+mynum[i]+"不及格,不用循环了"+"<br>");
} else{
document.write("成绩:"+mynum[i]+"及格,继续循环"+"<br>");
}
i=i+1;
}
</script>
试一下,好使的话自己对比看看
你的循环用的不对
这不是break的问题,你能出来就很好了,按理说你应该无线循环,知道崩溃的,i=i+1不应该写在else分支中的,i这个全局变量也很有可能埋坑啊。
因为你走前一个分支的时候没有执行i=i+1