文章目录
一、JS的代码块
JS中的代码块,只具有分组的的作用,没有其他的用途。代码块中的内容,在外部是完全可见的。
<script type="text/javascript">
{
var a = 10;
console.log("你好");
}
console.log("a = "+a);
</script>
二、流程控制语句
程序都是自上向下的顺序执行的,通过流程控制语句可以改变程序执行的顺序,或者反复的执行某一段的程序。
分类:
- 条件判断语句
- 条件分支语句
- 循环语句
2.1 条件判断语句(if语句)
语法一:
if(条件表达式){
语句...
}
执行流程:
if语句执行时,会先对条件表达式进行求值判断,
如果值为true,则执行if后的语句
如果值为false,则不执行
语法二:
if(条件表达式){
语句...
}else{
语句...
}
执行流程:
if…else语句执行时,会对条件表达式进行求值判断,
如果值为true,则执行if后的语句;
如果值为false,则执行else后的语句
语法三:
if(条件表达式){
语句...
}else if(条件表达式){
语句...
}else if(条件表达式){
语句...
}else if(条件表达式){
语句...
}else{
语句...
}
执行流程:
if…else if…else语句执行时,会自上至下依次对条件表达式进行求值判断;
如果判断结果为true,则执行当前if后的语句,执行完成后语句结束。
如果判断结果为false,则继续向下判断,直到找到为true的为止。
如果所有的条件表达式都是false,则执行else后的语句
2.2 条件分支语句(switch语句)
语法:
switch(条件表达式){
case 表达式:
语句...
break;
case 表达式:
语句...
break;
case 表达式:
语句...
break;
default:
语句...
break;
}
执行流程:
switch…case…语句在执行时,会依次将case后的表达式的值和switch后的表达式的值进行全等比较
;
如果比较结果为false,则继续向下比较。如果比较结果为true,则从当前case处开始向下执行代码;
如果所有的case判断结果都为false,则从default处开始执行代码。
注:
switch语句和if语句的功能实际上有重复的,使用switch可以实现if的功能,同样使用if也可以实现switch的功能,所以我们使用时,可以根据自己的习惯选择
。
2.3 循环语句
通过循环语句可以反复执行某些语句多次。
2.3.1 while循环
语法:
while(条件表达式){
语句...
}
执行流程:
while语句在执行时,会先对条件表达式进行求值判断,
如果判断结果为false,则终止循环
如果判断结果为true,则执行循环体
循环体执行完毕,继续对条件表达式进行求值判断,依此类推
2.3.2 do…while循环
语法:
do{
语句...
}while(条件表达式)
执行流程:
do…while在执行时,会先执行do后的循环体,然后在对条件表达式进行判断,
如果判断判断结果为false,则终止循环。
如果判断结果为true,则继续执行循环体,依此类推
和while的区别:
while:先判断后执行
do…while: 先执行后判断
do...while可以确保循环体至少执行一次。
2.3.3 for循环
语法:
for(①初始化表达式 ; ②条件表达式 ; ④更新表达式){
③语句...
}
执行流程:
首先执行①初始化表达式,初始化一个变量,
然后对②条件表达式进行求值判断,如果为false则终止循环
如果判断结果为true,则执行③循环体
循环体执行完毕,执行④更新表达式,对变量进行更新。
更新表达式执行完毕重复②
2.3.4 死循环
while(true){
}
for(;;){
}
三、break和continue
break关键字可以用来退出switch或循环语句
不能在单独的if语句中使用break和continue
break关键字,会立即终止离他最近的那个循环语句
示例:
<script type="text/javascript">
for(var i=0 ; i<5 ; i++){
console.log(i);
if(i == 2){
break;
}
}
</script>
可以为循环语句创建一个label
,来标识当前的循环, label:循环语句。
使用break语句时,可以在break后跟着一个label,这样break将会结束指定的循环,而不是最近的。
示例:
outer:
for(var i=0 ; i<5 ; i++){
console.log("@外层循环"+i)
for(var j=0 ; j<5; j++){
break outer;
console.log("内层循环:"+j);
}
}
continue关键字可以用来跳过当次循环
同样continue也是默认只会对离他最近的循环循环起作用
示例:
outer:
for(var i=0 ; i<5 ; i++){
for(var j=0 ; j<5 ; j++){
continue outer;
console.log("-->"+j);
}
console.log("@--->"+i);
}