流程控制语句
- 程序都是自上向下的顺序执行的, 通过流程控制语句可以改变程序执行的顺序,或者反复的执行某一段的程序。
- 分类:
1.条件判断语句
2.条件分支语句
3.循环语句
条件判断语句也就是if语句。它可以让程序可以选择执行路径。
if语句有三种三种形式:
语法一:
if(条件表达式){
语句…
}
执行流程:
if语句执行时,会先对条件表达式进行求值判断,
如果值为true,则执行if后的语句
如果值为false,则不执行
var a = 5, b = 3;
if(a>b){
alert('a大于b');
}
语法二:
if(条件表达式){
语句…
}else{
语句…
}
- 执行流程:
if…else语句执行时,会对条件表达式进行求值判断,
如果值为true,则执行if后的语句
如果值为false,则执行else后的语句
var a = 5, b = 3;
if(a>b){
alert('a大于b');
}else{
alert('a小于b');
}
语法三:
if(条件表达式){
语句…
}else if(条件表达式){
语句…
}else{
语句…
}
- 执行流程
- if…else if…else语句执行时,会自上至下依次对条件表达式进行求值判断,
如果判断结果为true,则执行当前if后的语句,执行完成后语句结束。
如果判断结果为false,则继续向下判断,直到找到为true的为止。
如果所有的条件表达式都是false,则执行else后的语句
var a = 5, b = 3;
if(a>b){
alert('a大于b');
}else if(a=b){
alert('a等于b');
}else{
alert('a小于b');
}
switch语句
语法:
switch(条件表达式){
case 表达式:
语句…
break;
case 表达式:
语句…
break;
case 表达式:
语句…
break;
default:
语句…
break;
}
执行流程:
switch…case…语句在执行时,会依次将case后的表达式的值和switch后的表达式的值进行全等比较,
如果比较结果为false,则继续向下比较。如果比较结果为true,则从当前case处开始向下执行代码。
如果所有的case判断结果都为false,则从default处开始执行代码。
//判断一个变量是否是字符串,如果不是则转为字符串返回,如果是字符串则直接返回当前的值。
var a = 'abc';
switch(typeof a){
case 'number' :
return a.toString();
break;
case 'string':
return '"' + a + '"';
break;
default:
return String(a);
}
循环语句
- 通过循环语句可以反复执行某些语句多次
- while循环
- 语法:
while (条件表达式) {
语句…
}
- 执行流程:
while语句在执行时,会先对条件表达式进行求值判断,
如果判断结果为false,则终止循环;
如果判断结果为true,则执行循环体;
循环体执行完毕,继续对条件表达式进行求值判断,依此类推;
ex:
var a = 0;
while (a<5) {
console.log(a); //0~4
a++;
}
do…while循环
- 语法:
do{
语句…
}while(条件表达式)
- 执行流程
do…while在执行时,会先执行do后的循环体,然后在对条件表达式进行判断,
如果判断判断结果为false,则终止循环。
如果判断结果为true,则继续执行循环体,依此类推。
var a = 10;
do{
console.log(a); //10 至少执行一次
}while (a>20) {
a++;
}
do…while 和 while的区别:
while:先判断后执行
do…while: 先执行后判断
- do…while可以确保循环体至少执行一次。
for循环
- 语法:
for(初始化表达式 ; 条件表达式 ; 更新表达式){
语句…
}
- 执行流程:
首先执行初始化表达式,初始化一个变量,
然后对条件表达式进行求值判断,如果为false则终止循环
如果判断结果为true,则执行循环体
循环体执行完毕,执行更新表达式,对变量进行更新。
更新表达式执行完毕重复。
ex:
//简单的for循环 求100以内能被7整除的数字。
for(var i =0; i<100; i++) {
if(i%7==0){
console.log(i);
}
}
补充: for…in 循环
for…in 循环用来方便的遍历枚举对象的属性成员。
ex:
var Obj = {
x : 1,
y : 2,
'name' : 'BanesLi',
'age' : 26
}
for(o in Obj) {
console.log(Obj[o]); // 1,2,BanesLi,26
}