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

来源:4-8 退出循环break

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>

结果:

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

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

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

写回答 关注

5回答

  • 我要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>

    老铁懂了吧?

    Chris_...

    非常感谢!

    2017-06-02 14:54:04

    共 1 条回复 >

  • 慕标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这个全局变量也很有可能埋坑啊。

    Chris_...

    去掉else也是一样的情况,还是没太明白

    2017-06-01 16:16:08

    共 1 条回复 >

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

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

    Chris_...

    我去掉了else,是不是可以这么理解: 当值小于60时,它满足了两个条件“while(i<mynum.length)”和“if(mynum[i]<60)”,所以这两个内容会同时输出,而值大于60时,并不满足“if(mynum[i]<60)”的条件,所以只输出while中的内容 能否详细说明一下跟i=i+1的关系在哪? 初学者,很茫然啊!!!

    2017-06-01 16:20:39

    共 2 条回复 >

JavaScript进阶篇

本课程从如何插入JS代码开始,带您进入网页动态交互世界

468190 学习 · 21891 问题

查看课程

相似问题