流程控制语句
【流程控制语句】
基本介绍
1 | * |
1 | * |
if(条件分支语句)
条件判断语句也称为if语句
语法一:
1 | if(条件表达式){ |
1 | 执行流程: |
语法二:
1 | if(条件表达式){ |
1 | 执行流程: |
语法三:
1 | if(条件表达式){ |
1 | 执行流程 |
- 条件语句可以嵌套(最好不要嵌套超过三层)
- if-elseif-else 语句注意条件的区间(下一级条件的成立是建立在上一级条件不成立的条件下)
- 可以只有 if 和 else if
switch(条件分支语句)
switch语句
语法:
1 | switch (变量/表达式) { |
执行流程:
switch…case…语句在执行时,会依次将case后的表达式的值和switch后的表达式的值进行全等比较,
如果比较结果为false,则继续向下比较。如果比较结果为true,则从当前case处开始向下执行代码。
如果所有的case判断结果都为false,则从default处开始执行代码。
- 与其他高级语言不同,在 JS 中 case 后不仅仅只能跟常量值,还可以跟变量和表达式
- 注意 switch 语句的 “开关” 特性(遇见 break 才跳出 switch,否则直接进入下一个 case),合理运用好 break(例如不加 break 可以实现多条 case 共用同一个语句体)
- default 语句不是必须的
while 循环语句
通过循环语句可以反复执行某些语句多次
while循环
语法:
1 | while(条件表达式){ |
执行流程:
while语句在执行时,会先对条件表达式进行求值判断,
如果判断结果为false,则终止循环
如果判断结果为true,则执行循环体
循环体执行完毕,继续对条件表达式进行求值判断,依此类推
do…while循环
语法:
1 | do{ |
执行流程
do…while在执行时,会先执行do后的循环体,然后在对条件表达式进行判断,
如果判断判断结果为false,则终止循环。
如果判断结果为true,则继续执行循环体,依此类推
和while的区别:
while:先判断后执行
do…while: 先执行后判断
do…while可以确保循环体至少执行一次。
for 循环语句
for循环
语法:
1 | for(1初始化表达式 ; 2条件表达式 ; 4更新表达式){ |
执行流程:
首先执行①初始化表达式,初始化一个变量,
然后对②条件表达式进行求值判断,如果为false则终止循环
如果判断结果为true,则执行③循环体
循环体执行完毕,执行④更新表达式,对变量进行更新。
更新表达式执行完毕重复②
for in 循环
for
循环的一个变体是 for ... in
循环,它可以把一个对象的所有属性依次循环出来:
1 | var o = { |
要过滤掉对象继承的属性,用 hasOwnProperty()
来实现:
1 | var o = { |
由于数组也是对象,而它的每个元素的索引被视为对象的属性,因此,for ... in
循环可以直接循环出数组的索引:
1 | var a = ['A', 'B', 'C']; |
请注意,for ... in
对数组的循环得到的索引是 String
而不是 Number
。
死循环
1 | while(true){ |
break 和 continue
break;
:立即终止本层次循环。
continue;
:立即跳过本层次循环,提前进入本层次的下一次循环。
label 表达式
label
是一个标签,可以使用 break
或 continue
使程序跳转到这个标签处执行(执行:break
或 continue
),从而改变程序的执行流程。
1 | // 注意:label 不是一个特定的关键字,可以随便取名 |
1 | label: for (var i = 0; i < 10; i++) { |
1 | // label + break 配合可以用在循环外 |
初识算法
算法:解决方案的准确而完整的描述!
- 输入
- 输出
- 有穷性
- 确定性
- 可行性
JS表达式与操作符 对象好的算法还要满足:可读性、健壮性!