01、代码块
用{}包围起来的代码,就是代码块。
JS中的代码块,只具有分组的作用,没有其他的用途。
代码块中的内容,在外部是完全可见的。举例:
{
var a = 2;
alert("132456465");
console.log("1024")
}
console.log(a) // 输出2 可以看出,虽然变量a是定义在代码块中的,但是在外部依然可以访问
02、流程控制语句
在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的。所以,我们必须清楚每条语句的执行流程。而且,很多时候我们要通过控制语句的执行顺序来实现我们要完成的功能。
流程控制语句分类
- 顺序结构
- 选择结构(if和switch)
- 循环结构(while语句、for语句)
03、顺序结构
按照代码的先后顺序,依次执行。如图:
04、if语句
if语句有以下三种:
-
条件判断语句
条件成立才执行,否则就什么都不做
语法:
if(条件表达式){ //条件为true时所做的事情 }
-
条件分支语句
语法:
if(条件表达式){ //条件为true时所做的事情 }else{ //条件为false时所做的事情 }
-
多分支if语句
语法:
//if-else if-else中也有短路现象,当满足条件1后执行完对应的操作后,后面的条件判断将不会执行 if(条件表达式1){ //条件1为true时所做的事情 }else if(条件表达式2){ //条件1为false 条件2为true时所做的事情 }else if(条件表达式3){ //条件1与条件2都为false 条件3为true时所做的事情 }else{ //条件1、2、3都为false 所做的事情 }
05、switch语句(条件分支语句)
switch语句也叫条件分支语句
语法:
switch(条件表达式){
case 值1:
语句1
break;
case 值2:
语句2
break;
case 值3:
语句3
break;
...
...
default:
语句n+1
break;
}
PS:在写条件分支的时候一定要加break,不然程序就会一直执行下去,直至遇到break或结束,这种现象也叫case穿透现象,还有一种情况就是default无论放在哪里都是最后执行,与放置的位置无关
switch语句执行流程
流程图如下:
06、for循环语句
for循环语句,看字面意思就知道这是循环语句的一种。
循环语句:就是可以通过循环语句多次反复的执行一段代码
语法:
for(初始化表达式;条件表达式;更新表达式){
执行的语句
}
流程图如下:
07、while循环语句
while循环
语法:
while(条件表达式){
语句...
}
流程图如下:
当然,在必要时可以使用break结束循环
do…while循环
语法:
do{
语句...
}while(条件表达式)
流程图如下:
while循环与do…while循环的区别
这两个语句的功能类似,不同的是:
- while是先判断后执行
- do…while是先执行后判断。
也就是说,do…while可以保证循环体至少执行一次,而while不能
08、break与continue
break
- break可以用来退出switch语句或整个循环语句(循环语句包括for、while。 不包括if。 if里不能用break和continue ,否则会报错)。
- break会立即终 止离它最近的那个循环语句。
- 可以为循环语句创建一 个label ,来标识当前的循环(格式: label:循环语句)。使用break语句时,可以在break后跟着一个label ,这样break将会结束指定的循环,而不是最近的。
例子1:
//该例子在a = 12 时就会结束循环,所以输出的值为0到12
for(var a = 0; a<100; a++){
console.log("a的值:"+a);
if(a == 12){
break; // 虽然这里在if里面使用了break,但不是对于if的,而是外面的for循环
}
}
例子2(label的使用):
outer:
for(var i = 0; i < 5; i++){
console.log("外层for循环i的值:"+i);
for(var j = 0; j < 5; j++){
break outer; // 直接跳出outer所在的外层循环(这个outer是自定义的label)
console.log("内层for循环j的值:"+j);
}
}
continue
- continue可以用来跳过当次循环。
- 同样,continue默认只会离他最近的循环起作用。