程序的执行顺序
- 顺序 —— 从上向下,顺序执行代码
- 分支 —— 根据条件判断,决定执行代码的 分支
- 循环 —— 让 特定代码 重复 执行
代码块
在开发中,一行代码很难完成某一个特定的功能,把完成某功能的多行代码放到一个代码块中;在js中,可以使用“{}”花括号为语句分组,分组后的语句要么都执行,要么都不执行,称为代码块。
代码块后面不用以;结尾,且代码块仅具有分组作用,没有数据隔离的作用,代码块内部的内容,在外部完全可以访问。
流程控制语句
条件判断语句:
if语句
执行时会先对条件表达式进行求值判断,如果条件成立即会执行语句,如果条件不成立,则不执行语句,
语法一 if:
if(条件表达式)
语句... ...
if语句只能控制紧随其后的语句,如果希望if语句可以控制多条语句,可以将这些语句放入代码块中,if语句中的代码块不是必须的,但是建议尽量写上,哪怕只有一条语句,以代码块的形式也更加明确。
语法二 if...else...:
if(条件表达式){
语句1... ...
}else{
语句2... ...
}
的值为true,则执行语句1,如果条件表达式的值为false,则执行语句2.
语法三 if...else if...else:
if(条件表达式){
语句1... ...
}else if(条件表达式){
语句2... ...
}
else{
语句3... ...
}
当该语句执行时,会从上到下依次对表达式进行求值判断,如果值为true,则执行当前语句。如果为false,则继续执行。
该语句只有一个代码块会被执行,一旦执行了就结束了,其他代码块不会被执行。
条件分支语句:
swich语句
语法一 swich:
swich(条件表达式){
case 表达式1:
语句1... ...
break;
case 表达式2:
语句2... ...
break;
... ...
default:
语句... ...
break;
}
执行流程:会将case后面的表达式的值和switch后的条件表达值的值进行全等比较如果为true,则执行表达式的值,如果为false,则继续判断。所以如果在case中没有写break,一但满足条件会执行从满足条件后的所有语句。所以如果用此语句,一定要加上break。
在所有的执行结果都和case比较后,如果都为false,则执行default。
循环语句:
while语句
语法一 while:
while(条件表达式){
语句... ...
}
表达式为true时,执行语句。当语句执行后会再次判断表达式,如果表达式仍然为true,则再次执行语句,直至表达式的值为false,退出循环。
死循环:改循环不会停止,除非关闭浏览器。在开发中要慎用。
while(true){
语句... ...
}
创建一个循环的三个步骤:
1、初始化一个变量 : var i = 0;
2、在循环中设置一个表达式:while(i<=10){
.... ....
}
3、定义一个更新设置,每次更新初始化变量:
while(i<=10){
.... ....
i++;
}
语法二 do while:
do{
语句1... ...
}while(条件表达式);
执行流程:会先执行循环体,然后再进行表达式判断,如果结果为true,则继续执行语句,直至表达式的值为false,则终止循环。
与while语句类似,俩者的区别是,while语句需要先判断表达式,如果第一次判断就是false,那么语句一次都不会被执行。而do...while...则是先执行语句,然后再进行表达式的判断,也就是不管表达式的返回值是什么,循环体都至少被执行了一次。
for语句
语法一 for()
for(初始表达式;条件表达式;更新表达式){
语句... ...
}
for循环语句的执行顺序:1、先执行初始化表达式,初始化变量;2、执行条件表达式,如果执行结果为true,则执行执行语句。如果为false,则终止循环;3、执行更新表达式,执行完毕后继续重复2的操作;
初始化表达式只会执行一次,除了初始化与条件表达式相关的变量,还可以一起初始化一些其他的变量,如用于基数的变量:
for(var i=1,m=0;i<10;i++){
m++;
}
for循环中的三个部分可以省略,也可以写在外部。写在外部就和whlie一样;
var i = 0;
for(;i<10;){
alert(i++);
}
如果for循环的三个部分都省略了,那么就相当于是个死循环,会一直执行;
for( ; ; ){
alert("这是一个死循环,会一直执行");
}