我们知道,大部分语言都有三种类型的语句,他们分别是顺序语句,分支语句,循环语句。
一:顺序语句:顺序语句很简单,就是我们平常写的语句,没有任何的if和switch语句进行分支,也没有while和do...while以及for语句。
二:分支语句:
分支语句有两大类:if语句和case语句。
1. if语句:
if(表达式){
//语句1
}
这个语句的意思是如果满足表达式,就执行语句1,如果不满足就跳过语句1,继续往后面执行。表达式是一个返回boolean类型的语句。
if(表达式){
//语句一
}else{
//语句二
}
这个语句的意思是如果满足表达式,就执行语句一,如果不满足就跳过语句一,执行语句二。表达式是一个返回boolean类型的语句。
if(表达式一){
//语句一
}else if(表达式二){
//语句二
}......
else{
//语句n
}
这个语句的意思是如果满足表达式一,就执行语句一,如果不满足就跳过语句一,判断表达式二,若满足执行语句二。不满足则继续往下,以此重复。如果都不满足,就会执行else语句。表达式是一个返回boolean类型的语句。这里要注意,不管有多少个if else语句都只执行一个语句。
2.switch语句。
他的语法是:
switch(表达式){
case 常量标号一:
case 常量标号二:
case常量标号三:
.................
default:
}
这里执行的方式是,先通过表达式的值,来和case中的常量标号进行匹配,如果匹配成功,则执行。如果不匹配的话就会执行defalut语句。
表达式必须是一个常数
这里特别需要注意的是:case语句会有穿透的作用,穿透的意思是:如果匹配到了其中一个case里的常量标号,会执行这个case这里的语句。执行完以后不会直接跳出这个switch语句,而是会继续往下执行。为了避免这一现象的发生。通常我们会在每一个case语句的后面都会加上break进行跳出该switch语句。例如:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="Generator" content="EditPlus®">
<meta name="Author" content="">
<meta name="Keywords" content="">
<meta name="Description" content="">
<title>switch语句中不添加break的执行结果</title>
</head>
<body>
<script type="text/javascript">
var a=4;
switch(a){
case 0:document.write("星期天"+"<br/>");
case 1:document.write("星期一"+"<br/>");
case 2:document.write("星期二"+"<br/>");
case 3:document.write("星期三"+"<br/>");
case 4:document.write("星期四"+"<br/>");
case 5:document.write("星期五"+"<br/>");
case 6:document.write("星期六"+"<br/>");
default:document.write("输入无效"+"<br/>");
}
</script>
</body>
</html>
星期四
星期五
星期六
输入无效
在这个例子中,在每一个case语句后面都没有添加break语句。当a=4时,会从case 1开始逐渐匹配,当case 4时匹配到了,然后打印星期四,但是此时程序还有没有结束,依然会逐步打印。这样的效果就称为case穿透
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="Generator" content="EditPlus®">
<meta name="Author" content="">
<meta name="Keywords" content="">
<meta name="Description" content="">
<title>switch语句中不添加break的执行结果</title>
</head>
<body>
<script type="text/javascript">
var a=4;
switch(a){
case 0:document.write("星期天"+"<br/>");break;
case 1:document.write("星期一"+"<br/>");break;
case 2:document.write("星期二"+"<br/>");break;
case 3:document.write("星期三"+"<br/>");break;
case 4:document.write("星期四"+"<br/>");break;
case 5:document.write("星期五"+"<br/>");break;
case 6:document.write("星期六"+"<br/>");break;
default:document.write("输入无效"+"<br/>");
}
</script>
</body>
</html>
星期四
在这个例子中,在每一个case语句后面都添加了break语句。当a=4时,会从case 1开始逐渐匹配,当case 4时匹配到了,然后打印星期四,然后继续执行,遇到break,跳出当前循环。这里需要注意一下,default没有加break语句的原因是它默认就有一个break语句。
三,循环语句:
1.while循环
语法:
while(表达式){
循环体;
}
解析:表达式的值是boolean类型。当返回值为true时,执行循环体。 否则不执行。在正常情况下,在循环体语句里面有使循环趋于结束的变量。不然就会陷入死循环
2.do...while();循环
do{
//循环体
解释: 先执行循环体。 然后去判断条件。条件成立,继续do。这里要特别注意一下:
1. 在do...while循环的while();后面是有分号的,而while后面是没有的
2. 不管while里面的条件的结果是不是true,都会先执行一次循环体
3.for循环
for(表达式1;表达式2;表达式3){
循环体语句。
}
解释:
表达式1;初始化一个变量。
表达式2; boolean类型的值。 控制循环次数。
表达式3; 是表达式二趋于false的结果。
先执行表达式一--->表达式二----->
循环体语句----->表达式三----> 表达式二--->
当表达式二返回一个false时候,结束循环 。
这么多循环我们到底用哪个好呢?
for: 当明确循环次数的时候,优先使用for循环。 在开发的过程中这个循环也是占主要部分
while:当循环次数不确定的时候,就该while循环出场了
do...while:这个循环老师说用的不多,但是我还是挺喜欢用这个循环的。例如用来控制输入,先让用户输入一次,如果输入的不符合规范的话,就继续输入,直到用户输入规范为止。