正 文

JavaScript学习从入门到精通


www.7dspace.com  更新日期:2005-8-16 3:13:06  七度空间


第七天 循环结构
------------------------------------------------------

  昨天我们了解了选择结构,但当我们处理一个需要不断重复的事件时,我们就需要用上循环结构了.做为一个程序员,除了可以按顺序的编写语句之外,我们还应该考虑如何去提高语句的工作效率,也就是说要标准化编程.我们来看一个例子:
var srt_to=0
++srt_to
alert("你点了第"+srt_to+"下")
++srt_to
alert("你点了第"+srt_to+"下")
++srt_to
alert("你点了第"+srt_to+"下")

  假设我们要使用户点三下然后退出,上面的例子的确可以实现,但我们也看到这个例子代码罗唆,每一条语句的效率都很低.很明显我们只要告诉计算机加1和alert()要显示什么,再指定好重复的次数,其他的问题都给计算机去做了~下面我们就来看看改了之后的例子:
var srt_to=0
while(srt_to<3){
++srt_to
alert("你点了第"+srt_to+"下")
}

  通过这个例子,我们一看到了今天要说明的第一个循环结构,while()循环,这是JS中最简单的循环,它的语法如下:
while(表达式){
需要循环的语句
}
  JS计算while的表达式之后,如果是true那么就开始执行需要循环的语句,否则就跳出循环执行后面的语句.不过当你能确定循环的次数时,while()并不是最好的选择,while()一般用在具有某些自然运行的条件,而且可以转换成表达式的时候.比如你要求用户必须输入一个值,否则不继续下面的程序.比如:

<script language="language=" type="text/javascript">
var you_name=prompt("请输入你的名字","游客")
while (you_name=="游客"  you_name==""){
you_name=prompt("请输入你的名字","游客")
}
alert("欢迎你,"+you_name)
</script>

  这里我们通过重复输入框要求用户一定要输入用户名,才可以进行下一步. while()虽然是最简单的,但在实际中for()却是最常用到的.当我们准确的知道需要重复几次同一个语句的时候,for()的操作性就更强些.我们先来看看for()的语法:

for(var 计数器的变量名=变量原始值;关于计数器的表达式;确定循环的方向){
需要循环的语句
}
或许看上去比较复杂,其实一点也不,我们就拿今天的第一个例子来说明.
for(var srt_to=0;srt_to<=3;srt_to++){
alert("你点了第"+srt_to+"下")
}
  首先我们在for()中声明一个变量,做为计数器,设它的原始值为0,接着我们给出这个计数器的比较表达式,使我们知道在点第三下的时候跳出这个循环,最后我们确定这个数值的增长方向,试计数器的值向3靠近.
当然我们并没有规定一定要用递增来表示增长方向,只要是数字表达式都可以完成确定方向的作用.

  接下来我们看最后一个循环结构do...while(),之所以放在最后是因为我们很少用到这个循环结构,那在什么情况下才能用呢?之前我们要求用户输入姓名才可以继续下面的过程,我们也用到了两个you_name=prompt("请输入你的名字","游客"),而do...while()就可以解决这个问题.现在我们把程序改成如下:

<script language="language=" type="text/javascript">
do{
var you_name=prompt("请输入你的名字","游客")
}
while (you_name=="游客"  you_name=="")
alert("欢迎你,"+you_name)
</script>

  比较一下前面的例子,我们就是在进入循环之前,先循环一次,省掉了我们在循环执行以前还需要输入的语句,虽然不常用到,不过也的确简化了代码,提高了工作效率.

  了解了循环结构,通常我们只需要循环按照给出的条件运行就可以了,不过有时候我门回想提前结束这个循环,或者在遇见某条语句的时候跳出循环,这时候我们就可以用上break和continue.而从现在开始我们就进行一些循环结构与选择结构之间的嵌套.

  我们先来看break,事实上在讲多边选择的时候,我们已经见过了这个关键词,在这里具有同样的意思,提示我们跳出循环,执行循环以外的语句.举个简单的例子:

<script language="language=" type="text/javascript">
var input_total=0
var input_value
for(var counter=1;counter<=3;counter++){
input_value=eval(prompt("输入你要计算的数字",0))
if(input_value<0){
input_total=0
break
}
input_total+=input_value
}
if(input_total!=0){
alert("结果为:"+input_total/3)
}
else{
alert("对不起没有结果,你输入错误!")
}
</script>

  我们计算三个数的平均数,要求用户输入的值不能为负数,否则跳出循环提示你输入错误,在这个例子中,当用户输入负数的时候,我们就使input_totoal的值为0,跳出循环给下一个选择结构去判断,我们看到后面的双边选择中input_total不等于0的时候才是真值,所以计算机选择了假值中的语句来作为答案.

continue与break的区别就在它不是结束着个循环,而是重新进行一次循环.我们就看看同一个例子:
<script language="language=" type="text/javascript">
var input_total=0
var input_value
var counter=0
while(counter<3){
input_value=eval(prompt("输入你要计算的数字",0))
if(input_value<=0  input_value==null){
continue
}
input_total+=input_value
counter++
}
alert("结果为:"+input_total/3)
</script>

  因为我们无法知道用户会取消几次输入,或者输入多少个0,所以我们用while()来循环,这我们看到在循环中我们用if(input_value<=0  input_value==null)来说明当用户输入小于等于0的数或者点击取消的时候,我们循环到input_value=eval(prompt("输入你要计算的数字",0))要求重新输入.

  今天的最后我们来说说死循环,当我们导致循环没有一个出口,永远也不可能停止的时候,我们就把这种情况称为死循环.虽然死循环也有他的好处,但在正常的编程中,我们还是要设法避免出现死循环.例如我们讲for()结构时用到的例子,for(var srt_to=0;srt_to<=3;srt_to++),如果我们把srt_to<=3改为srt_to>=3,
那么这个循环就永远也不可能停止了,那么我们如何避免死循环的出现呢?

for()需要执行的语句不要改变循环计数变量的值.
while(),do...while()中至少有一个可以改变你进行循环过程的值.

  我还想说的就是一个程序员的个人道德问题,编程应该是使工作变得更加方便,而不是带来无限的烦恼,如果你编程是为了给其他人带来麻烦,而显示出所谓的水平,那么我认为你根本就不配是一个程序员,这类人也是我最反感的.虽然只是三两句,但我希望看这段话的人可以正确的看待编程,如果你觉得这些话和你的观点有出入的话,我建议你不要再学习编程了.
9页,当前在第7页  1  2  3  4  5  6  7  8  9  

上一篇:Meta:HTML设计中的大作用
下一篇:制作主页的五十个秘诀
作者:24CG  来源:eNet网络学院 ( 责任编辑:7dspace )
收藏此页】【打印】【关闭
站 内 搜 索
 

热 点 导 读
特 别 推 荐