JavaScript 流程控制语句
一、选择语句
1. if 语句
(1) if 语句的基本使用
- if 语句是最简单的条件语句,也称选择语句,通常和 else 一起使用,表示 如果…就…否则…

- 单行 if 语句:如果 if 语句体中只有一行语句,可以省略大括号和换行
(2) if else if 多条件分支
- else if() 条件分支“暗含”不符合之前所有条件,要理解什么叫“否则如果”
2. switch 语句
(1) switch 语句的基本使用
- switch 语句的用途:当一个变量被分类讨论的情形

- 在 switch() 的圆括号中一般是一个变量名,这个变量将被分类讨论
- case 表示“情况”,它后面没有圆括号,直接跟一个值
程序会依次将 case 后面的值与 switch 圆括号中的值进行全等比对,如果比对相同,则执行这条 case 冒号后面的语句
default 表示默认情况 - 多条 case 可以共用同一个语句体
- 在执行了某一个分支后要书写 break 来跳出语句体
如果不书写 break,则后面的所有 case 都将被视为匹配,直至遇见 break
3. 三元运算符
(1) 三元运算符

- 问号前面是 判断的条件,问号后面用冒号隔开两个表达式,当条件表达式为真实调用表达式 1,为假时调用表达式 2
(2) 三元运算符的基本使用
- 用途:根据某个条件是否成立,在两个不同的值中选择变量的值
二、循环语句
1. for 循环语句
(1) 语法
for(循环变量=初值;循环条件;递增/递减计数器) {
循环代码段
}
(2) 流程
- 用循环变量初始值与循环条件相比较,确定返回值
- 如果返回值为 true,则执行循环体
- 执行完一次后进行 递增 / 递减 运算
- 将运算结果与循环条件相比较
- 如果返回值为 true 则继续执行循环体
如果返回值为 false 则退出循环体

2. while 循环语句
- while 语句也是一种循环结构,它事先不指定循环开始、结束的范围,只要测试条件满足,就一直执行循环体
(1) 语法
while(条件表达式) {
循环执行代码段
}
(2) 流程
- 判断条件表达式的值
- 当值为 true 的时候循环执行代码段
- 当值为 false 的时候退出循环体
(3) 特性
- 先检查条件,再执行循环
- 若条件不满足则一次循环也不执行
- 一个动作被重复执行到满足某个条件时
3. do while 循环语句
- do while 循环是一种“后测试循环语句”
for 循环和 while 循环是“先测试条件是否满足,然后执行循环体”
(1) 语法
do {
循环执行代码段
} while(条件表达式)
(2) 流程
- 先执行循环体内代码段在进行判断
- 如果表达式的值为 true,则重复执行代码段
- 如果表达式的值为 false,则退出循环体
(3) 特性
- 先执行循环体,再测试条件是否满足
- 循环体内代码至少执行一次
- 希望一个动作至少被执行一次时使用
4. for-in 循环语句
(1) 语法
for(声明变量 in 对象) {
代码段
}
(2) 作用
- 枚举对象属性
(3) 注意事项
- 循环输出的属性顺序不可预知
- 对象的值不能是 null 或 undefined
三、跳转语句
1. break 语句
- break 表示立即终止循环,在 for 循环和 while 循环中都可以使用
2. continue 语句
- continue 用于跳过循环中的一个迭代,并继续执行循环中的下一个迭代
3. return 语句
- return 用于终止函数体的运行,并返回一个值
四、异常处理语句
1. throw 语句
- 主动抛出异常
2. try 语句
- 指明需要处理的代码段
3. catch 语句
- 捕获异常
4. finally 语句
- 后期处理
6. 随机数函数
Math.random():得到 0 到 1 之间的小数- 得到 [a, b] 区间的整数,公式:
parseInt(Math.random() * (b -a + 1)) + a
二、算法
1. 什么是算法
- 算法(Algorithm)是指解题方案的准确而完整地描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入在有限时间内获得所要求的输出
- 算法就是把一个问题拆解为计算机能够一步一步执行的步骤
- 计算机的流程控制语句:顺序执行、选择语句、循环语句
2. 优秀算法的要求
- 正确性
- 健壮性
- 可读性
五、深克隆和浅克隆
- 使用
var arr2=arr1的语法不会克隆数组
1. 浅克隆
- 浅克隆:只克隆数组的第一层,如果是多维数组,或者数组中的项是其他引用类型值,则不可隆其它层,克隆的项会“藕断丝连”
- 实现浅克隆:准备一个空的结果数组,然后使用 for 循环遍历原数组,将遍历到的项都推入结果数组
2. 深克隆
- 深克隆:克隆数组的所有层,要使用递归技术
- 实现深克隆:使用递归思想,整体思路和浅克隆类似,但稍微进行一些改动:如果遍历到的项是基本类型值,则直接推入结果数组;如果遍历到的项又是数组,则重复执行浅克隆的操作
<script>
function deepClone(arr) {
//结果数组
var result = [];
//遍历数组的每一项
for (var i = 0; i < arr.length; i++) {
//如果遍历到的项是数组
if (Array.isArray(arr[i])) {
//递归
result.push(deepClone(arr[i]));
} else {
result.push(arr[i]));
}
}
return result;
}
</script>
版权声明:本文为weixin_46227563原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。