问答详情
源自:4-8 退出循环break

为什么小于60的数会在结果中会出现两次

<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>

结果:

http://img.mukewang.com/592fbbd80001f2f302810271.jpg

我还没有加break停止循环,想试试不加会事什么效果。

为什么明明小于60的数却会出现两个,在判断mynum[i]>60不成立后,不应该是不显示这行输出吗,为什么还是显示了,感觉没有进行判断。难道跟break有关系?

提问者:Chris_克瑞斯 2017-06-01 15:03

个回答

  • 我要SSR
    2017-06-02 11:40:51
    已采纳

    没毛病啊?

    <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>

    老铁懂了吧?

  • 慕标1138095
    2017-06-02 10:02:47

        <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>



    试一下,好使的话自己对比看看


  • 慕粉1166919
    2017-06-01 22:02:14

    你的循环用的不对

  • qq_丶Summer念_1
    2017-06-01 16:10:42

    这不是break的问题,你能出来就很好了,按理说你应该无线循环,知道崩溃的,i=i+1不应该写在else分支中的,i这个全局变量也很有可能埋坑啊。

  • 慕标1138095
    2017-06-01 16:05:40

    因为你走前一个分支的时候没有执行i=i+1