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>"); }
个人觉得,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>"); }
执行到continue后,i的值没有增加,永远等于2,myscore[i]=57,所以就陷入了死循环。