JavaScript流程控制
- 默认情况下,浏览器会按书写从上至下顺序执行程序中的每一行代码,但是这并不能满足我们使用的开发需求
- JavaScript提供3种流程结构,不同的流程结构可以实现不同的运行流程
- 顺序结构:默认的流程结构,按书写顺序从上至下执行每一条语句
- 选择结构:对给定的条件进行判断,再根据判断结果来决定执行哪一行代码
- 循环结构:在给定条件成立的情况下,反复执行某一段代码
选择结构
if选择结构
-
if的第一种形式
当条件表达式为真的时候就会执行{}中的代码,并且只会执行一次
if(条件表达式){ 条件满足执行的语句; }
-
if的第二种形式
当条件满足就执行if后面{}中的代码,条件不满足就执行else后面{}中的代码,两个{}只有一个会被执行,并且只会被执行一次
if(条件表达式){ 条件成立执行的语句; }else{ 条件不成立执行的语句; }
-
if的第三种形式
会从上至下的以此判断每一个条件表达式,哪一个条件表达式满足,就执行哪一个条件表达式后面{}中的代码,如果前面所有的表达式都不满足,就会执行else后面{}中的代码
众多大括号只有一个会被执行,并且只会执行一次
if(条件表达式A){ 条件A满足执行的语句; }else if(条件表达式B){ 条件B满足执行的语句; } ... ... else{ 前面所有条件都不满足执行的语句; }
-
if注意点
- 对于非布尔类型的数据,会先转换成布尔类型再判断
- 对于== ===判断,将常量写在前面
- if/else if/else后面的大括号都可以省略,但是省略之后只有紧随其后的语句收到控制
- 在JavaScript中分号; 也是一条语句(空语句)
- if选择结构可以嵌套使用
- 当if选择结构省略大括号时,else if/else会自动和距离最近没有被使用的if匹配
在企业开发中,如果条件满足后只有一句代码需要执行,那么就使用三目运算符
在企业开发中,如果条件满足后有多句代码需要执行,那么就使用选择结构
switch选择结构
-
switch格式
会从上至下的依次判断每一个case是否和()中表达式的结果相等,如果相等就执行对应case后面的代码,如果前面所有的case都不匹配,就会执行default后面的代码
并且所有的case和default只有一个会被执行,并且只会被执行一次
switch(表达式){ case 表达式A: 语句A; break; case 表达式B: 语句B; break; ... ... default: 前面所有case都不匹配执行的代码; break; }
-
switch注意点
- case判断的是=== 而不是==
- ()中可以是常量可以是变量也可以是表达式
- case后面可以是常量可以是变量也可以是表达式
- break的作用是立即结束整个switch语句(在switch语句中一旦case或者default被匹配,那么其他的case和default都会失效)
- default不一定要写在最后,switch中的default无论放到什么位置,都会等到所有case都不匹配再执行
- 和if/else的else一样,default也可以省略不写
在企业开发中如果是对区间进行判断,建议使用if
在企业开发中如果是对几个固定的值的判断,那么建议使用switch
原则:能用if就用if
循环结构
while循环
-
while格式
只有条件表达式为真才会执行后面{}中的代码,有可能被执行多次
while(条件表达式){ 条件满足执行的语句; }
-
书写循环结构的规则
- 先写上循环结构的代码
- 将需要重复执行的代码拷贝到{}中
- 在()中指定循环的结束条件
-
while的注意点
- 死循环:条件表达式永远为真的循环结构称之为死循环
- 循环结构后面的{}我们称之为循环体
- 和if一样对于非Boolean类型的值,会先转换为Boolean类型再判断
- 和if一样while后如果只有一条语句可以省略大括号
- 和if一样,不能再()后面写分号
dowhile循环
dowhile循环格式
-
无论条件表达式是否为真,循环体都会被执行一次
do{ 需要重复执行的代码; }while(条件表达式);
在企业开发中发部分情况下while循环和dowhile循环是可以互换的
在企业开发中如果循环体中的代码无论如何都需要先执行一次,那么建议使用dowhile,其他的情况都建议使用while
变量作用域
- 全局变量就是定义在{}外面的变量,称之为全局变量
- 无论是通过var还是通过let定义的全局变量,都是从定义的那一行到文件末尾都可以使用
- 局部变量就是定义在{}里面的变量,称之为局部变量
- 如果是通过var定义的局部变量,和全局变量一样,后续都可以被使用
- 如果是通过let定义的局部变量,那么这个变量只能在当前定义变量的{}中使用
for循环
-
for循环格式
for循环的特点和while循环的特点一样,只有条件表达式为真,才会执行循环体
for(初始化表达式;条件表达式;循环后增量表达式){ 需要重复执行的代码; }
如果是while循环,在循环之后还可以使用用于控制循环结束的变量
如果是for循环,在循环结束之后可以让外界使用,也可以不让外界使用,在企业开发中由于for循环比while循环灵活,所以能用for循环就用for循环
-
for循环注意点
- 在for循环中"初始化表达式""条件表达式""循环后增量表达式"都可以不写
- 如果不写就相当于while(1);
- 其他注意点和while一样
break关键字
- break关键字可以用于switch语句和循环结构中,作用是立即结束当前的switch/循环结构
- break关键字注意点
- break关键字后面不能编写任何的语句,因为永远执行不到
- 如果在循环嵌套的结构中,break结束的是当前所在的循环结构
continue关键字
- continue关键字只能用于循环结构,作用是跳过本次循环,进入下一次循环
- continue关键字注意点
- 和break关键字一样,后面不能编写其他的代码,因为执行不到
- 和break一样,如果出现在循环嵌套结构中,只会跳过当前所在的循环