continue到底能不能在while里用? 这简直是个悬疑故事

来源:4-9 继续循环continue

雷叔爱吃各种面

2016-12-22 01:24

var myscore=[100,89,57,91],i=0;
     while(i<myscore.length)
    {
        if(myscore[i]<60)
        {
             document.write("成绩不及格,不输出!"+"<br/>");
             continue;
        }
        document.write("成绩:"+myscore[i]+"及格,输出!"+"<br>");
        i++;
    }

上面这样写,包括do...while,就死机了。

那问题来了,这里面到底哪里不对? 看以前的问答里有人说在while里i++要放到if前面,屁,那就从89开始了,最后还来个undefined。   求个真大腿来简单易俗的讲解下为什么while不行?还能不能行? for为什么行?   谢谢
下面这样写,就没毛病。

 var myscore=[100,89,57,91]//定义数组mynum并赋值
 var i;
 for(i=0;i<myscore.length;i++)
 {
      if(myscore[i]<60)
    {
    document.write("成绩不及格,不输出!"+"<br>");
    continue;
    }
    document.write("成绩:"+myscore[i]+"及格,输出!"+"<br>");
}


写回答 关注

2回答

  • 晴颜
    2016-12-25 15:01:54
    已采纳
    个人觉得,for的使用和while的使用情况还是有很大区别的,像这种需要遍历的就用for就好了,使用while再使用continue也是可以用的,就是容易陷入死循环,自增条件一般是放在前面的,你看下面的代码,功能是可以实现的,但是我感觉一点都不规范,因为一上来就自增,所以起点是-1,这样不方便维护
    
    
    var myscore=[100,89,57,91],i=-1;
         while(i<myscore.length-1)
        {
    		
    		i++;
            if(myscore[i]<60)
            {
                 document.write("成绩不及格,不输出!"+"<br/>");
                 continue;
            }
    		document.write("成绩:"+myscore[i]+"及格,输出!"+"<br>");
            
            
        }


    雷叔爱吃各种...

    i=-1 || i++放在if前面,在此例确实可以,谢谢。for和while毕竟是不同的循环机制,continue在for里不会有冲突,我大概是这样理解的

    2016-12-27 14:43:52

    共 1 条回复 >

  • 千之叶
    2016-12-22 02:05:23

    执行到continue后,i的值没有增加,永远等于2,myscore[i]=57,所以就陷入了死循环。

    那谁很靠谱3... 回复千之叶

    你这个是正解

    2016-12-27 18:26:45

    共 2 条回复 >

JavaScript进阶篇

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

468747 学习 · 22181 问题

查看课程

相似问题