目录
代码块
在js中可以使用{}来为语句进行分组
同一个{}中的语句我们称为是一组语句,它们要么都执行,要么都不执行。
一个{}中的语句我们也称为叫一个代码块。代码块的后面不用再添加;。
js中的代码块,只具有分组的作用,没有其他的用途。
代码块中的内容,在外部完全可见。
流程控制语句
js中的程序时从上到下一行一行执行的,
通过流程控制语句可以控制程序执行流程,使程序可以根据一定的条件来选择执行。
语句的分类:
1、条件判断语句
2、条件分支语句
3、循环语句
一、条件判断语句(if语句)
使用条件判断语句可以在执行某个语句前进行判断,
如果条件成立才会执行语句,不成立则语句不执行。
语法一
if(条件表达式){
语句...
}
- 执行流程:
if语句在执行时,会对条件表达式进行求值判断。
如果条件表达式的值为true,则执行if后的语句。
如果条件表达式的值为false,则不会执行if后的语句。
- if语句只能控制紧随其后的那条语句,如果要控制多条语句,将其统一放到代码块中即可。
- if语句后的代码块不是必须的,但是开发中尽量写上代码块,即使if后只有一条语句。
语法二
if(条件表达式){
语句...
}else{
语句...
}
- 执行流程:
if语句在执行时,会对条件表达式进行求值判断。
如果条件表达式的值为true,则执行if后的语句。
如果条件表达式的值为false,则执行else后的语句。
语法三
if(条件表达式){
语句...
}else if条件表达式){
语句...
}else if条件表达式){
语句...
}else{
语句...
}
- 执行流程:
当该语句执行时,会从上到下依次对对条件表达式进行求值判断。
如果条件表达式的值为true,则执行当前的语句。
如果值为false,则继续执行下面的条件表达式进行判断。
如果所有条件都不满足,则执行最后一个else后的语句。
- 该语法中,只会有一个代码块被执行,一旦代码块执行了,则直接结束语句。
例子:
二、条件分支语句(switch语句)
语法
switch(条件表达式){
case 表达式:
语句...
break;
case 表达式:
语句...
break;
default:
语句...
break;
}
- 执行流程:
在执行时依次将case后的表达式的值和switch后的条件表达式的值进行全等比较,
1. 如果比较结果为true,则从当前case处开始执行代码,并且当前case后的所有代码都会执行。
在case后边添加break关键字,确保只执行当前case后的语句,不会执行其后面case的语句。
2. 如果比较结果为false,则继续向下比较。
3. 如果所有的比较结果都为false,则只执行default后的语句。
- switch语句和if语句的功能实际上有重复的,使用时,可以根据自己的习惯选择。
例子:
三、循环语句
通过循环语句可以反复的执行一段代码多次
1、while循环
语法一
while(条件表达式){
语句...(循环体)
}
- 执行流程:
先对条件表达式进行求值判断,
如果值为true,则执行循环体,
循环体执行完毕后,继续对表达式进行判断,如果为true,则继续执行循环体,以此类推。
如果值为false,则终止循环。
- 条件表达式写为true的循环叫做死循环,该循环不会停止,除非浏览器关闭,开发中慎用。
- 可以使用break,终止循环。
- 创建循环的三个步骤:
- 初始化一个变量
- 在循环中设置一个条件表达式
- 定义一个更新表达式(循环体),每次更新初始化变量。
语法二
do{
语句...
}while(条件表达式)
- 执行流程:
语句在执行时,会先执行循环体,循环体执行完毕后,再对while后的条件表达式进行判断,
如果为true,则继续执行循环体,执行完毕继续判断while条件表达式以此类推。
如果值为false,则终止循环。
while先判断后执行,do...while先执行后判断。
do...while可以保证循环体至少执行一次。
例子:
改进if中的例子:
2、 for循环
语法
for(1.初始表达式;2.条件表达式;4.更新表达式){
3.语句...
}
- 执行流程:
1.执行初始化表达式,初始化变量
2. 执行条件表达式,判断是否执行循环
如果为true,则执行循环3.
如果为false,终止循环
4.执行更新表达式,更新表达式执行完继续重复2
- for(;;)为死循环,慎用
例子:
补充
break
break关键字可以用来退出switch或循环语句
不能在if语句中使用break和continue
break关键字会立即终止离它最近的那个循环语句
可以为循环语句创建一个label,来标识当前的循环
label:循环语句
使用break语句时,可以在break后跟一个label,这样break将会结束指定的循环。
continue
continue关键字用来跳过当次循环
同样continue也是默认只会对离他最近的循环起作用
也可以使用标签退出外层循环
灵活运用break和continue改进算法,提升性能。
利用console.time("计时器的名字")console.Endtime("计时器的名字")来测试代码运行时间。
未使用break在合适位置退出时,打印10000以内质数的程序。
检查出一个因数后,即证明该数不是质数,break退出循环不再检查,可以减少代码运行时间。
检查到一个数的开方即可检查出该数所有的因数,进一步减少循环检验次数,进一步提升性能。