为了账号安全,请及时绑定邮箱和手机立即绑定

为什么小于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://img1.sycdn.imooc.com//592fbbd80001f2f302810271.jpg

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

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

正在回答

5 回答

没毛病啊?

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

老铁懂了吧?

0 回复 有任何疑惑可以回复我~
#1

Chris_克瑞斯 提问者

非常感谢!
2017-06-02 回复 有任何疑惑可以回复我~

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



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


0 回复 有任何疑惑可以回复我~

你的循环用的不对

0 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~
#1

Chris_克瑞斯 提问者

去掉else也是一样的情况,还是没太明白
2017-06-01 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~
#1

Chris_克瑞斯 提问者

意思就是,当值小于60时,mynum[i]<60判断成立后,如果不加break终止,它就会继续输出第二个内容,导致值小于60的输出两遍内容。还是没太明白
2017-06-01 回复 有任何疑惑可以回复我~
#2

Chris_克瑞斯 提问者

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

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信