JavaScript流程控制语句.docx
- 文档编号:11018572
- 上传时间:2023-02-24
- 格式:DOCX
- 页数:35
- 大小:366.52KB
JavaScript流程控制语句.docx
《JavaScript流程控制语句.docx》由会员分享,可在线阅读,更多相关《JavaScript流程控制语句.docx(35页珍藏版)》请在冰豆网上搜索。
JavaScript流程控制语句
第5章流程控制语句
JavaScript程序是由若干个语句组成的,每一个语句以分号作为结束符。
语句可以很简单,也可以很复杂。
其中,改变程序正常流程的语句称为控制语句。
流程控制语句是用来控制程序中各语句执行顺序的语句,是程序中基本却又非常关键的部分。
流程控制语句可以把单个语句组合成有意义的、能完成一定功能的小逻辑模块。
本章内容包括:
❑顺序控制语句;
❑选择控制语句;
❑循环控制语句;
❑其他流程控制语句。
通过本章学习,读者应该对几种流程控制语句有很深的理解,并可以利用这几种流程控制语句编写简单的程序。
5.1顺序控制语句
JavaScript语言中,顺序控制语句是最简单的语句。
其有如下特点:
所有语句按照一定的顺序执行,每一条语句只执行一遍,不重复执行,也没有语句不执行。
JavaScript语言中的顺序控制语句包括表达式语句,函数调用语句,空语句和复合语句等。
5.1.1表达式语句
表达式后面跟一个分号就构成了一个表达式语句。
最常见的表达式语句为赋值语句。
赋值语句是在一个赋值表达式后跟一个分号形成的,程序中很多计算都由赋值语句完成。
【示例5-1】演示几个表达式语句。
其代码如下所示。
varm=4;//把4赋给变量m
varn=”helloworld”;//把字符串helloworld赋值给n
i=m+n;//把变量m和n的和赋值给变量i
实际上,任何表达式都可以加上分号而成为语句。
【示例5-2】变量i自增1。
i++;//变量i的值加1
注意:
有些语句写法虽然是合法的,但是由于其没有保留计算结果,因而并没有实际意义。
如以下代码:
a-b;
i++-1;
5.1.2函数调用语句
函数将在本书第7章详细介绍,本节先介绍一下函数调用语句。
函数调用语句是由函数调用加上分号组成的。
其一般形式如下:
函数名(实际参数列);
执行函数语句是调用函数体,并把实际参数赋予函数定义中的形式参数,然后执行被调用函数体中的语句。
如果是调用无参数函数,则“实参表列”可以没有,但是括号不能省略。
如果实参表列包含多个实参,那么各个参数间需要用逗号隔开。
实参与形参的个数应该相等,实参与形参按顺序对应,一一传递数据。
【示例5-3】演示函数调用语句。
其代码如下所示。
functionsum(x,y)//定义函数sum(x,y)
{
returnx+y;//返回变量x与y的和
};
a=2;
b=2;
c=sum(a,b);//调用函数sum(x,y),将值返回给c
当然,函数是一段程序。
这段程序可以存在于函数库中,也可能是由用户自己定义,当调用函数时会转到该段程序执行。
但是函数调用是以语句的形式出现,它与前后语句之间的关系是顺序执行的。
5.1.3空语句
空语句是指只有一个分号的语句,即:
;
空语句不产生任何动作。
在程序中,如果不需要进行任何操作,但是从语句的结构上来说,必须有一个语句时就可以写一个空语句。
5.1.4复合语句
在JavaScript语言中,可以用大括号{}把一些语句括起来,对外看作是一个语句,就构成一个复合语句。
【示例5-4】演示用大括号括起来的复合语句。
其代码如下所示。
{
i=2;
j=3;
m=i*j;
}
复合语句可以出现在允许语句出现的任何地方,在选择结构和循环结构中都会看到复合语句的用途。
一般情况下,函数也是由复合语句构成的。
5.2选择控制语句
除了简单的顺序控制语句外,JavaScript语言还定义了一些可以控制程序执行流程的语句,这些语句提供对控制流的选择和循环功能。
在JavaScript语言中,语句默认都是顺序执行。
但如果遇到选择或循环语句,顺序执行的规则就要发生改变。
JavaScript语言中的选择控制语句有:
if语句、if…else语句和switch语句。
5.2.1if语句和if…else语句
if语句用于在程序中有条件地执行某一语句序列。
if语句有多种形式的应用,下面分别介绍。
1.双路条件选择
双路条件选择语句是根据给定的条件进行判断,以决定执行哪一个分支程序段。
程序控制结构如图5-1所示。
if(条件表达式)
{
语句序列1
}
else
{
语句序列2
}
代码说明:
❑首先判断条件表达式是否为真,如果为真就执行语句序列1;
❑如果条件表达式为假,就执行语句序列2。
图5-1双路条件选择结构
if和else都是JavaScript语言中的关键字,执行if语句时,程序先计算条件表达式的值,如果值为true,则执行语句序列1,如果值为false,则执行语句序列2。
注意:
分支语句序列如果只有一个语句,就不用大括号括起来;如果超过一个语句,分支中的所有语句都需要用大括号括起来,以便与分支之外的语句相区分。
【示例5-5】演示双路条件语句序列。
其代码如下所示。
双路条件语句序列
varm,n;//定义两个变量m,n
m=23;//变量的赋值
n=35;
if(m>n)//条件语句
{
document.write("m大于n");
}
else
{
document.write("m小于n");
}
代码说明:
❑首先定义初始化两个变量;
❑然后判断两个变量的大小,如果m>n,输出“m大于n”;
❑如果m>n为假,那么就输出“m小于n”。
该程序的运行结果如图5-2所示。
图5-2双路条件语句序列
2.单路条件选择
单路条件选择就是判断该条件表达式是否为真,如果为真就执行括号中的语句序列,否则就不执行该语句序列。
程序执行流程如图5-3所示。
if(条件表达式)
{
语句序列
}
图5-3单路条件选择
这个结构只有if分支,没有else分支,如果条件表达式成立,则执行if分支语句,否则执行if语句之后的其他语句。
【示例5-6】演示单路条件选择。
其代码如下所示。
单路条件语句序列
varm,n;//定义两个变量
m=23;//变量的赋值
n=35;
if(m document.write("m小于n"); 代码说明: 首先定义初始化两个变量m,n;然后判断表达式m 该程序运行效果如图5-4所示。 图5-4单路条件选择 3.多重条件选择结构 多重条件选择是判断一个条件表达式是否为真,如果为真就执行语句序列,否则就判断下一个条件表达式是否为真。 其结构如下所示。 if(条件表达式1) { 语句序列1 } elseif(条件表达式2) { 语句序列2 } …… elseif(条件表达式n) { 语句序列n } else { 语句序列n+1 } 这种条件选择结构对elseif进行更多的条件判断,不同的条件对应不同的语句组。 同时,if语句还可对语句进行嵌套。 注意: 使用if嵌套语句时,最好使用{}来确定相互的层次关系。 多重条件选择结构如图5-5所示。 图5-5多重条件选择序列 【示例5-7】一个多重条件选择序列,用来判断分数所在区间,输出相应结果。 其代码如下所示。
多重条件语句序列
/*插入JavaScript语句*/
varscore=78;//定义初始化变量score的值为78
if(score>=90)//多重条件语句
{
document.write("A");
}
elseif(score<90&&score>=80)
{
document.write("B");
}
elseif(score<80&&score>=70)
{
document.write("C");
}
elseif(score<70)
{
document.write("D");
}
代码说明:
❑首先定义初始化变量score;
❑判断score>=90是否为真,如果为真就输出“A”,为假就继续下一个判断;
❑接着判断score<90&&score>=80是否为真,如果为真就输出“B”,为假就继续下一个判断;
❑再接着判断score<80&&score>=70是否为真,如果为真就输出“C”,为假就继续下一个判断;
❑最后判断score<70是否为真,如果为真就输出“D”,为假不做任何动作。
该程序输出结果为“C”。
5.2.2switch语句
在多重条件选择的情况下,可使用if…else…结构来实现。
但使用switch语句会使程序更加简练、清晰。
switch语句式多分支的开关语句,常用于多重条件选择。
它将一个表达式的值同许多其他值比较,并按比较结果选择执行下面的语句。
switch语句的格式如下:
switch(表达式)
{
case常量表达式1:
语句序列1;
break;
case常量表达式2:
语句序列2;
break;
……
case常量表达式n:
语句序列n;
break;
default:
语句序列n+1;
break;
}
switch语句的执行顺序是:
❑先计算switch语句中表达式的值;
❑然后在case语句中寻找与该值相等的常量表达式,并以此作为入口标号,由此开始顺序执行。
❑如果没有找到相等的常量表达式,则从default:
开始执行。
使用switch语句要注意以下问题:
❑表达式可以是字符型或枚举型表达式;
❑各常量表达式的值不能相同,但他们在switch语句中出现的次序不影响最后的执行结果;
❑每个case分支可以有多条语句,不必用{};
❑若干分支需要执行相同的操作时,可以使多个case分支共用一组语句。
❑每个case语句只是一个入口标号,并不能确定执行终止点,因此每个case分支的最后可以加break语句,用来结束整个switch结构,否则会从入口点开始一直执行到switch结构结束点。
【示例5-8】演示一个switch语句。
其代码如下所示。
switch语句
/*插入javascript代码*/
varscore="m";//定义初始化变量score的值为字符串m
switch(score)//判断score的值
{
case"m":
//如果是“m”,就执行以下语句
document.write("A");
break;
case"n":
//如果是“n”,就执行以下语句
document.write("B");
break;
default:
//默认执行以下语句
document.write("default");
}
代码说明:
❑该程序先定义初始化变量score赋值为m;
❑switch语句中如果score的值为m则输出A;
该程序运行结果如图5-6所示。
图5-6switch语句
5.3循环语句
循环语句是在一定条件下,反复执行某段程序的控制结构,被反复执行的语句序列称为循环体。
JavaScript语言中有3种常用的循环语句:
for语句、while语句、do…while语句,除此之外还有label语句,break语句,continue语句。
本节将详细讲解这几种循环语句。
5.3.1for语句
for语句通常用于预先知道循环次数的情况,其一般语法格式如下:
for(表达式1;表达式2;表达式3)
{
代码块
}
其中表达式1可以是一个初始化语句,一般用于对一组变量进行初始化或赋值。
表达式2用作循环的条件控制,是一个条件或逻辑表达式,当其值为true时,继续下一次循环,当其值为false时,则终止循环。
表达式3在每次循环结束后执行,一般用于改变控制循环的变量。
代码块在表达式2为true时执行。
for语句的具体执行过程是这样的:
❑执行表达式1;
❑计算表达式2的值;
❑如果表达式2的值为true,先执行后面的语句,再执行表达式3,然后转向步骤1;如果表达式2的值为false,则结束整个for循环。
【示例5-9】使用for语句循环输出i的值。
其代码如下所示。
for语句
/*插入JavaScript代码*/
for(vari=0;i<10;i++)//for循环语句
/*变量i的初始值为0,每执行一次就自增1,直至i的值到了10就终止执行该语句*/
{
document.write("第",i+1,"次循环中i的值为:
",i,"
");//输出i,
是换行符
}
代码说明:
❑该程序中i的初始值为0,只要当i<10,就继续下一次循环,循环结束后,i自增1。
❑该程序循环输出10个i的值。
该程序的运行效果如图5-7所示。
图5-7for语句
5.3.2while语句
while语句的一般语法格式如下:
while(条件表达式)
{
循环体
}
当条件表达式的运算结果为true时,则重复执行循环体。
每执行一次循环体后,就会重新计算一次条件表达式,当该表达式的值为false时,while循环结束。
循环体可以是单个语句,也可以是复合语句块。
while语句的执行流程如图5-8所示。
图5-8while语句的执行流程
【示例5-10】演示while语句。
其代码如下所示。
while语句
vari=1;
while(i<6)//while语句
/*当i<6时,就不断的执行以下语句*/
{
document.write("JavaScript",i,"
");//输出JavaScripti
i++;
}
代码说明:
❑首先定义一个变量i;
❑该程序中只要当i小于6,就会循环执行输出语句,并将i自增1。
该程序运行结果如图5-9所示。
图5-9while语句
5.3.3do…while语句
do…while语句的一般语法形式如下:
do
语句;
while(条件表达式);
do-while语句每一次循环执行一次语句,然后计算条件表达式是否为true,如果是则继续执行循环,否则结束循环。
do…while循环中的语句至少会执行一次,这点是与while语句不同的,而while语句当条件第一次不满足时,语句一次也不能被执行。
do…while语句的执行流程如图5-10所示。
图5-10do…while语句的执行流程
与while语句一样,在使用do…while语句时也要注意在代码块中一定要能够改变循环条件中的变量,do…while语句的一般表达式有以下两个步骤:
(1)执行循环中的代码块;
(2)判断循环条件是否为真,如果循环条件为真,则返回步骤
(1),继续执行循环,如果循环条件为假,则跳出循环。
【示例5-11】定义do…while语句,当i<6时循环输出i。
其代码如下所示。
do...while语句
vari=1;
do//do…while语句
{
document.write("JavaScript",i,"
");
i++;
}while(i<6)
代码说明:
❑首先定义一个变量i,并赋值为1;
❑然后使用do…while语句,当i<6时,输出“JavaScripti”。
该程序的执行结果如图5-11所示。
图5-11do…while语句
5.3.4label语句
label语句的使用方式如下所示:
label:
代码块
label语句只是在代码块之前加上一个标识,这样在程序中的其他语句中可以引用这个标识。
一般在循环中,break语句和continue语句可以通过label语句跳出或终止本轮循环。
5.3.5break语句
break语句是提供无条件跳出循环结构或switch语句的功能。
一般,break语句是单独使用的。
有时也可在其后面加一个语句标号,以表明跳出该标号指定的循环体,然后执行循环体后面的代码。
【示例5-12】演示如何使用break语句。
其代码如下所示。
break语句
/*插入JavaScript代码*/
for(i=1;i<10;i++)//for循环语句
/*循环9次*/
{
document.write("i=",i,"
");
/*当i=5时,跳出循环*/
if(i==5)
{
break;//break语句跳出循环
}
}
代码说明:
❑该程序中for语句循环输出i的值;
❑当i等于5时,跳出循环。
【示例5-12】的效果如图5-12所示。
图5-12break语句
break语句还有另外一种使用方式:
breaklabel。
在使用label的情况下,执行到breaklabel立即跳出label标识的代码块。
【示例5-13】用一个age变量记录了人的年龄,程序在页面上显示年龄,并且,当年龄小于25时,显示一条警告信息:
youngpeople。
其代码如下所示。
breaklabel语句
age=15;
largeage:
//label语句
{
/*判断age>=25是否为真,如果为真就breaklargeage语句,否则继续执行下面代码。
if(age>=25)
breaklargeage;
document.write("youngpeople'sageis:
");//输出字符串
document.write(age);//输出age
}
代码说明:
❑当变量age大于等于25时,跳出largeage标识的代码块,不再显示youngpeople’sage。
❑当变量age小于25时,输出youngpeople’sage。
该程序的效果如图5-13所示。
图5-13breaklabel语句
一般使用break语句时,只能跳出当前循环,而在多重嵌套循环中,有时需要跳出多重循环,直接在使用breaklabel方式的情况下,可以直接在多重嵌套循环中跳出外层循环。
5.3.6continue语句
continue语句也用于循环语句,其类似于break语句,但它不是结束循环,而是结束循环语句的当前一次循环,接着执行下一次循环。
在while和do…while循环结构中,执行控制权转至条件表达式的判断,在for结构中,转去执行表达式2。
【示例5-14】演示如何使用continue语句。
其代码如下所示。
break语句
/*插入JavaScript代码*/
for(i=1;i<10;i++)//for循环
{
/*如果i能整除2,就跳出循环
if(i%2==0)
continue;//continue语句跳出循环
document.write("i=",i,"
");
}
代码说明:
❑for语句循环执行10次,当i%2恒等于0时,跳出本次循环,执行下一次循环;
❑然后程序再输出i的值。
【示例5-14】的效果如图5-14所示。
图5-14continue语句
5.4其他流程控制语句
JavaScript语言还提供了其他一些控制语句。
如for…in语句,with语句,注释,return语句等。
JavaScript语言中的return语句用于函数中,在函数结束前通过return语句,并返回值给调用函数的语句。
5.4.1for…in语句
JavaScript语言中的for…in语句的一般表达式如下所示:
for(变量in对象)
{
代码块
}
JavaScript语言是一种基于对象的语言,for…in是循环语句在对象上的一种应用方式。
在该语句中,变量将会列出对象的每一个属性。
5.4.2with语句
with语句的一般表达式如下所示:
with(对象)
{
代码块
}
JavaScript语言中的with语句用于声明代码块中的默认对象。
代码块可以直接使用with语句声明对象的属性和方法,而不用写出该属性和方法的完整应用。
如果在代码块中有若干语句需要使用同一对象的属性和方法,使用with语句后,只需写一次该对象的完整引用,然后就可在代码块中直接使用该对象的属性和方法,这样可以极大减少代码编写的工作量。
5.5本章实例
1.使用if…el
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JavaScript 流程 控制 语句