JavaScript进阶 - 第4章 跟着我的节奏走(流程控制语句)
第4章 跟着我的节奏走(流程控制语句)
4-1 做判断(if语句)
if语句是基于条件成立才执行相应代码时使用的语句。
语法:
if(条件)
{ 条件成立时执行代码}
注意:if小写,大写字母(IF)会出错!
假设你应聘web前端技术开发岗位,如果你会HTML技术,你面试成功,欢迎加入公司。代码表示如下:
<script type="text/javascript">
var mycarrer = "HTML";
if (mycarrer == "HTML")
{
document.write("你面试成功,欢迎加入公司。");
}
</script>
任务
请在右边编辑器的第7行,使用if语句补充代码,实现判断,是否购买笔,条件:只要笔是黑色(black),就购买。
?不会了怎么办
1.使用if语句判断
2.条件为mypen == "black"
代码:
1 <!DOCTYPE HTML> 2 3 <html><head> 4 5 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 6 7 <title>if语句</title> 8 9 <script type="text/JavaScript"> 10 11 var mypen = "black"; //定义变量mypen,存储笔的黑色。 12 13 if(mypen=="black") 14 15 { 16 17 document.write("笔是黑色的,所以购买"); 18 19 } 20 21 </script> 22 23 </head> 24 25 <body> 26 27 </body> 28 29 </html>
4-2 二选一 (if...else语句)
if...else语句是在指定的条件成立时执行代码,在条件不成立时执行else后的代码。
语法:
if(条件)
{ 条件成立时执行的代码}
else
{条件不成立时执行的代码}
假设你应聘web前端技术开发岗位,如果你会HTML技术,你面试成功,欢迎加入公司,否则你面试不成功,不能加入公司。
代码表示如下:
<script type="text/javascript">
var mycarrer = "HTML"; //mycarrer变量存储技能
if (mycarrer == "HTML")
{ document.write("你面试成功,欢迎加入公司。"); }
else //否则,技能不是HTML
{ document.write("你面试不成功,不能加入公司。");}
</script>
任务
今天去看电影,如果有票就可以看电影,没有票电影看不成。在右边编辑器的第8、12行补充代码,使用if...else进行判断。
?不会了怎么办
if语句()里填写判断条件
else执行条件不成立语句
代码:
1 <!DOCTYPE HTML> 2 3 <html> 4 5 <head> 6 7 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 8 9 <title>if...else</title> 10 11 <script type="text/JavaScript"> 12 13 function myfunction(){ 14 15 var ticket=document.getElementById("thedo").value; 16 17 if(ticket==true) 18 19 { 20 21 document.getElementById("show_results").innerHTML="有票,可以看电影。"; 22 23 }else{ 24 25 document.getElementById("show_results").innerHTML="没票,电影看不成。"; 26 27 } 28 29 } 30 31 </script> 32 33 </head> 34 35 <body> 36 37 <select id="thedo" name=""> 38 39 <option value="0">没有票</option> 40 41 <option value="1">有票</option> 42 43 </select> 44 45 <input type="submit" onclick="myfunction()" value="ok"> 46 47 <p id="show_results"></p> 48 49 </body> 50 51 </html>
4-3 多重判断(if..else嵌套语句)
要在多组语句中选择一组来执行,使用if..else嵌套语句。
语法:
if(条件1)
{ 条件1成立时执行的代码}
else if(条件2)
{ 条件2成立时执行的代码}
...
else if(条件n)
{ 条件n成立时执行的代码}
else
{ 条件1、2至n不成立时执行的代码}
假设数学考试,小明考了86分,给他做个评价,60分以下的不及格,60(包含60分)-75分为良好,75(包含75分)-85分为很好,85(包含75分)-100优秀。
代码表示如下:
结果:
任务
联合国世界卫生组织对年龄的划分标准, 44岁以下为青年;45岁至59·岁为中年人。60岁至89岁为老年人;90岁以上为长寿老年人。赵红今年99岁了,他属于那个年龄阶段的。使用if...else嵌套语句进行判断。
?不会了怎么办
多条件判断else if
最后判断使用else
代码:
1 <!DOCTYPE HTML> 2 3 <html> 4 5 <head> 6 7 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 8 9 <title>if...else</title> 10 11 <script type="text/JavaScript"> 12 13 var myage =99;//赵红的年龄为99 14 15 if(myage<=44) 16 17 {document.write("青年");} 18 19 else if(myage<=59) 20 21 {document.write("中年人");} 22 23 else if (myage<=89) 24 25 {document.write("老年人");} 26 27 else 28 29 {document.write("长寿老年人");} 30 31 </script> 32 33 </head> 34 35 <body> 36 37 </body> 38 39 </html>
4-4 多种选择(Switch语句)
当有很多种选项的时候,switch比if else使用更方便。
语法:
switch(表达式)
{
case值1:
执行代码块 1
break;
case值2:
执行代码块 2
break;
...
case值n:
执行代码块 n
break;
default:
与 case值1 、 case值2...case值n 不同时执行的代码
}
语法说明:
Switch必须赋初始值,值与每个case值匹配。满足执行该 case 后的所有语句,并用break语句来阻止运行下一个case。
假设评价学生的考试成绩,10分满分制,我们按照每一分一个等级将成绩分等,并根据成绩的等级做出不同的评价。
代码如下:
执行结果:
评语: 及格,加油!
注意:记得在case所执行的语句后添加上一个break语句。否则就直接继续执行下面的case中的语句,看以下代码:
执行结果:
评语: 继续努力!
评语: 及格,加油!
评语: 凑合,奋进
评语: 很棒,很棒
评语: 高手,大牛
在上面的代码中,没有break停止语句,如果成绩是4分,则case 5后面的语句将会得到执行,同样,case6、7-10后面的语句都会得到执行。
任务
我们来做个周计划,周一、二学习理念知识,周三、四到企业实践,周五总结经验,周六、日休息和娱乐。请根据星期几做出选择,使用Switch语句完成,补充右边代码编辑器中第8、20、21行代码,完成星期几的判断。
?不会了怎么办
使用switch进行选择
case进行条件匹配
break 结束当前 case中的语句
代码:
1 <!DOCTYPE HTML> 2 3 <html> 4 5 <head> 6 7 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 8 9 <title>switch</title> 10 11 <script type="text/JavaScript"> 12 13 var myweek = 4;//myweek表示星期几变量 14 15 switch(myweek) 16 17 { 18 19 case 1: 20 21 case 2: 22 23 document.write("学习理念知识"); 24 25 break; 26 27 case 3: 28 29 case 4: 30 31 document.write("到企业实践"); 32 33 break; 34 35 case 5: 36 37 document.write("总结经验"); 38 39 break; 40 41 default: 42 43 document.write("周六、日休息和娱乐"); 44 45 } 46 47 </script> 48 49 </head> 50 51 <body> 52 53 </body> 54 55 </html>
4-5 重复重复(for循环)
很多事情不只是做一次,要重复做。如打印10份试卷,每次打印一份,重复这个动作,直到打印完成。这些事情,我们使用循环语句来完成,循环语句,就是重复执行一段代码。
for语句结构:
for(初始化变量;循环条件;循环迭代)
{
循环语句
}
假如,一个盒子里有6个球,我们每次取一个,重复从盒中取出球,直到球取完为止。
<script type="text/javascript">
var num=1;
for (num=1;num<=6;num++) //初始化值;循环条件;循环后条件值更新
{ document.write("取出第"+num+"个球<br />");
}
</script>
结果:
执行思路:
任务
我们有1,2,3...10不同面值的钱,使用for语句完成合计,看看我们一共有多少钱,请补充第8行代码,实现该功能。
?不会了怎么办
for语句,缺少"循环条件",mymeny<=10
for(mymeny=1;mymeny<=10;mymeny++)
代码:
1 <!DOCTYPE HTML> 2 3 <html> 4 5 <head> 6 7 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 8 9 <title>if...else</title> 10 11 <script type="text/JavaScript"> 12 13 var mymeny,sum=0;//mymeny变量存放不同面值,sum总计 14 15 for(mymeny=1;mymeny<=10;mymeny++) 16 17 { 18 19 20 21 sum= sum + mymeny; 22 23 } 24 25 document.write("sum合计:"+sum); 26 27 </script> 28 29 </head> 30 31 <body> 32 33 </body> 34 35 </html>
4-6 反反复复(while循环)
和for循环有相同功能的还有while循环, while循环重复执行一段代码,直到某个条件不再满足。
while语句结构:
while(判断条件)
{
循环语句
}
使用while循环,完成从盒子里取球的动作,每次取一个,共6个球。
<script type="text/javascript">
var num=0; //初始化值
while (num<=6) //条件判断
{
document.write("取出第"+num+"个球<br />");
num=num+1; //条件值更新
}
</script>
任务
我们使用while语句,输出5个数字。补充第8行代码。
?不会了怎么办
while(mynum<=5)或while(mynum<6)
代码:
1 <!DOCTYPE HTML> 2 3 <html> 4 5 <head> 6 7 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 8 9 <title>while</title> 10 11 <script type="text/javascript"> 12 13 var mynum =1;//mynum初值化数值为1 14 15 while (mynum<=5) 16 17 { 18 19 document.write("数字:"+mynum+"<br/>"); 20 21 mynum=mynum+1; 22 23 } 24 25 </script> 26 27 </head> 28 29 <body> 30 31 </body> 32 33 </html>
4-7 来来回回(Do...while循环)
do while结构的基本原理和while结构是基本相同的,但是它保证循环体至少被执行一次。因为它是先执行代码,后判断条件。
do...while语句结构:
do
{
循环语句
}
while(判断条件)
我们试着输出5个数字。
<script type="text/javascript">
num= 1;
do
{
document.write("数值为:" + num+"<br />");
num++; //更新条件
}
while (num<=5)
</script>
执行结果:
为什么呢?我们来看下执行思路:
任务
我们使用do...while语句,输出6个数字。补充第8行和13行代码。
?不会了怎么办
do...while语句,因为至少被执行一次,所以要注意循环条件。
代码:
1 <!DOCTYPE HTML> 2 3 <html> 4 5 <head> 6 7 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 8 9 <title>do...while</title> 10 11 <script type="text/javascript"> 12 13 var mynum =6;//mynum初值化数值为6 14 15 do 16 17 { 18 19 document.write("数字:"+mynum+"<br/>"); 20 21 mynum=mynum-1; 22 23 } 24 25 while(mynum<=6 && mynum>=1) 26 27 </script> 28 29 </head> 30 31 <body> 32 33 </body> 34 35 </html>
4-8 退出循环break
在while、for、do...while、while循环中使用break语句退出当前循环,直接执行后面的代码。
格式如下:
for(初始条件;判断条件;循环后条件值更新)
{
if(特殊情况)
{break;}
循环代码
}
当遇到特殊情况的时候,循环就会立即结束。看看下面的例子,输出10个数,如果数值为5,就停止输出。
执行结果:
注:当num=5的时候循环就会结束,不会输出后面循环的内容。
任务
考试成绩输出,如果成绩及格继续输出下个成绩,如果成绩不及格,退出并且后面成绩不输出, 我们使用break语句,退出循环。
?不会了怎么办
break语句,退出循环。
代码:
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 3 <html xmlns="http://www.w3.org/1999/xhtml"> 4 5 <head> 6 7 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 8 9 <title>break</title> 10 11 <script type="text/JavaScript"> 12 13 var mynum =new Array(70,80,66,90,50,100,89);//定义数组mynum并赋值 14 15 var i=0; 16 17 while(i<mynum.length) 18 19 { 20 21 if(mynum[i]<60) 22 23 { 24 25 document.write("成绩"+mynum[i]+"不及格,不用循环了"+"<br>"); 26 27 break; 28 29 } 30 31 document.write("成绩:"+mynum[i]+"及格,继续循环"+"<br>"); 32 33 i=i+1; 34 35 36 37 } 38 39 </script> 40 41 </head> 42 43 <body> 44 45 </body> 46 47 </html>
4-9 继续循环continue
continue的作用是仅仅跳过本次循环,而整个循环体继续执行。
语句结构:
for(初始条件;判断条件;循环后条件值更新)
{
if(特殊情况)
{ continue; }
循环代码
}
上面的循环中,当特殊情况发生的时候,本次循环将被跳过,而后续的循环则不会受到影响。好比输出10个数字,如果数字为5就不输出了。
执行结果:
注:上面的代码中,num=5的那次循环将被跳过。
任务
考试成绩输出,如果成绩及格继续输出下个成绩,如果成绩不及格,则不输出该成绩,我们使用continue语句完成,补充第14行代码。
?不会了怎么办
continue语句,退出本次循环,继续执行后面的循环。
代码:
1 <!DOCTYPE HTML> 2 3 <html> 4 5 <head> 6 7 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 8 9 <title>continue</title> 10 11 <script type="text/JavaScript"> 12 13 var mynum =new Array(70,80,66,90,50,100,89);//定义数组mynum并赋值 14 15 var i; 16 17 for(i=0;i<mynum.length;i++) 18 19 { 20 21 if(mynum[i]<60) 22 23 { 24 25 document.write("成绩不及格,不输出!"+"<br>"); 26 27 continue; 28 29 } 30 31 document.write("成绩:"+mynum[i]+"及格,输出!"+"<br>"); 32 33 } 34 35 </script> 36 37 </head> 38 39 <body> 40 41 </body> 42 43 </html>
4-10 编程练习
在一个大学的编程选修课班里,我们得到了一组参加该班级的学生数据,分别是姓名、性别、年龄和年级,接下来呢,我们要利用JavaScript的知识挑出其中所有是大一的女生的的名字哦。
学生信息如下:
('小A','女',21,'大一'), ('小B','男',23,'大三'),
('小C','男',24,'大四'), ('小D','女',21,'大一'),
('小E','女',22,'大四'), ('小F','男',21,'大一'),
('小G','女',22,'大二'), ('小H','女',20,'大三'),
('小I','女',20,'大一'), ('小J','男',20,'大三')
任务
第一步: 把这些数据组成一个数组,方便我们之后操作哦。
提示: 使用二维数组。
第二步: 筛选数据吧,首先找出都是大一的所有信息 ;
第三步: 最后再一次筛选上一步得到的数据,打印出都是女生的姓名 ;
提示: 可以用switch 或 if 语句进行筛选。
?不会了怎么办
代码:
1 <!DOCTYPE HTML> 2 3 <html > 4 5 <head> 6 7 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 8 9 <title></title> 10 11 <script type="text/javascript"> 12 13 var infos = [ 14 15 ['小A','女',21,'大一'], 16 17 ['小B','男',23,'大三'], 18 19 ['小C','男',24,'大四'], 20 21 ['小C','男',24,'大四'], 22 23 ['小D','女',21,'大一'], 24 25 ['小E','女',22,'大四'], 26 27 ['小F','男',21,'大一'], 28 29 ['小G','女',22,'大二'], 30 31 ['小H','女',20,'大三'], 32 33 ['小I','女',20,'大一'], 34 35 ['小J','男',20,'大三'] 36 37 ]; 38 39 for(var i = 0; i < infos.length; i++) { 40 41 if(infos[i][3] === "大一" && infos[i][1] === "女") { 42 43 document.write(infos[i][0] + "<br />"); 44 45 } 46 47 } 48 49 </script> 50 51 </head> 52 53 <body> 54 55 </body> 56 57 </html>