 
		Chris_克瑞斯
2017-06-01 15:03
<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
JavaScript进阶篇
469065 学习 · 22582 问题
相似问题