六 控制流程
第一部分--分支
(一)知识导读
(二)流程控制
在程序执行过程当中,各条代码的执行顺序对程序结果是有直接影响的.很多时候我们需要通过控制代码的执行顺序来实现我们要完成的功能.
主要有三种结构:顺序结构,分支结构,循环结构.
顺序结构:从上到下依次执行.
(三)if分支语句
从上到下执行代码的过程中,根据不同的条件,执行不同的路径代码.从而得到不同的结果.
if的语法结构:
if(条件表达式1){ 执行语句1 }else if(条件表达式2){ 执行语句2 }else{ 执行语句3 }
案例1:弹出一个输入框,要求用户输入年龄,如果年龄大于18岁,则允许进入网吧.
var age=prompt('请输入您的年龄'); age=parseInt(age); if(age>=18){ alert('允许进入网吧'); }else{ alert('不许进入网吧'); }
案例2:接收用户输入的年份,如果是闰年,就弹出是闰年.否则弹出是平年
var year=prompt('请输入年份:'); year=parseInt(year); if(year%4==0&&year%100!=0||year%400==0){ alert(year+'年是闰年'); }else{ alert(year+'年是平年'); }
案例3:
var grade=prompt('请输入成绩'); grade=parseInt(grade); if(grade>=90) alert('您的成绩为A'); else if(grade>=80) alert('您的成绩为B');//90以上已经被筛选走,不需要再次判断,其他的同理. else if(grade>=70) alert('您的成绩为C'); else if(grade>=60) alert('您的成绩为D'); else alert('您的成绩为E');
(四)三元表达式
三元表达式也可以做一些简单的条件选择.
条件表达式 ? 表达式1 : 表达式2;
如果条件表达式结果为真,则返回1,否则返回2
var num=10; var result= num>5 ? '是的' : '不是' ;//返回是的
案例:用户输入一个数字,如果小于10,在前面补0,如果不小于10,则直接输出数字.
var num=prompt('请输入一个数字'); alert(num<10? '0'+num : num);
(五)switch语句
switch语句也是多分支语句,它基于不同的条件执行不同的代码.当要针对变量设置一系列的特定值的选项时,就可以使用switch.
语法结构:
switch(表达式){ case value1: 执行语句1;break; case value2: 执行语句2;break; ... default: 执行最后的语句; //如果都不满足,才执行这个 }
执行思路:匹配.利用表达式的值和case后面的值相匹配,如果匹配的上,就执行该case的语句.如果都没匹配上,执行default的语句.
switch只适合固定值的匹配,如果是范围的比较建议用if else.
注意事项:
-
switch小括号里的表达式经常写成变量的形式.
-
num的值和case里的值相匹配的时候必须是全等,即"===",数据类型也必须相同.
-
break记得写,不然会直接执行下一个语句.case穿透
案例:在弹出框里输入一个水果,如果有,就弹出该水果的价格.如果没有,就弹出:没有此水果
var fruit=prompt('请输入您要查询的水果'); switch(fruit){ case '苹果' : alert('苹果的价格为10元一斤'); break; case '香蕉' : alert('香蕉的价格为13元一斤'); break; case '西瓜' : alert('苹果的价格为2.5元一斤'); break; case '榴莲' : alert('榴莲的价格为38元一斤'); break; default:alert('没有此水果'); }
(六)switch和if的区别
-
一般情况下,这两个案例可以相互替换
-
switch一般在case比较确定值的情况下使用,而if语句更加灵活,常用于范围判断.
-
switch语句进行条件判断后直接进行到程序的条件语句,效率更高.而if语句有几种条件,就得判断多少次.
-
分支比较少时,if语句效率更高,分支比较多时,switch语句效率高,而且表达更清晰.