分支语句
JS 在执行的时候, 是按照 从上往下的顺序执行的
所以我们书写的所有代码都会执行, 区别就是执行顺序的问题
但是上述的执行方案会有一个小问题, 比如我想根据某一个条件决定是否执行一段代码
一个代码案例:
在访问一个页面的时候, 如果页面地址输入的没问题, 并且网络也能够正常访问页面
那么此时一定可以正常访问页面
如果上述的条件有一个不满, 比如说地址输入错误, 或者说网线被扒了
那么此时页面就无法正常的访问了
此时如果是前端JS处理, 那么应该是这解决的:
如果条件1和条件2都成立, 那么展示一个正常的页面
否则, 展示一个错误的页面 (404页面)
所以分支语句的一个核心就是给了我们 基于某一个条件决定执行某一段代码的能力
if 语句
-
语法1:
if (条件) {
书写如果条件成立, 需要执行的代码
}- 条件为真 就会执行 大括号内的 代码, 否则 不执行
- 条件可以直接书写布尔值, 也可以书写一个表达式, 或者一个数字
- 只要你书写的不是一个布尔值, 那么会隐式转换为 一个布尔值
-
语法2:
if (条件) {
书写如果条件成立, 需要执行的代码
} else {
当上边的条件不成立的时候, 我会执行, 如果上边的条件成立了, 我就不执行了
} -
语法3(不推荐大量使用):
if (条件1) {
如果条件1成立, 那么我会执行, 同时后续的所有 else if 或者 else 都不会执行了
} else if (条件2) {
如果条件1不成立, 但是条件2成立了, 那么我会执行 , 同时后续的所有 else if 或者 else 都不会执行了
} else if (条件3) {
如果条件1和条件2都不成立, 但是条件3成立了, 那么我会执行 , 同时后续的所有 else if 或者 else 都不会执行了
} ..... -
语法4(语法3的一个升级补充):
if (条件1) {
如果条件1成立, 那么我会执行, 同时后续的所有 else if 或者 else 都不会执行了
} else if (条件2) {
如果条件1不成立, 但是条件2成立了, 那么我会执行 , 同时后续的所有 else if 或者 else 都不会执行了
} else if (条件3) {
如果条件1和条件2都不成立, 但是条件3成立了, 那么我会执行 , 同时后续的所有 else if 或者 else 都不会执行了
} else {
如果上述的所有条件都不成立, 那么我会执行, 否则就不执行
}- 注意: if 语句的难点不是如何选择 语法 1 2 3 4
- 难点是 if 语句 的 条件如何书写
三元表达式 (三元运算符/三目运算符/问号冒号表达式)
也是分支语句的一种, 对 if 语句的一个优化
- 语法: 条件
?条件为真的时候执行的代码(只有一行):条件为假的时候执行的代码
/**
* 假设一个变量 box 他的值可能是 1 也可能是 2
*
* 我们要根据 这个变量的值 去创建一个新的变量, 内部的值存储为 成功或者失败
*
* 我们自己约定 如果值 === 1 那么为成功, 其他情况 为失败
*/
// if 语句完成上述需求
var box = 2
var msg;
if (box === 1) {
msg = '成功'
} else {
msg = '失败'
}
console.log(msg)
// 利用 三元表达式优化上述的 if 语句
var box = 1
// var msg = 条件 ? 条件为真的时候执行的代码(只有一行) : 条件为假的时候执行的代码
var msg = box === 1 ? '成功' : '失败'
console.log(msg)
switch 语句
主要用于某一个变量的具体值, 做判断 (全等 ===)
// switch (变量) {
// case 100:
// 当变量的值 === 100 的时候会执行
// break;
// case 101:
// 当变量的值 === 101 的时候会执行
// break;
// default:
// 当上述条件都不满足的时候, 执行
// }
var day = 4 // 取值范围是 1~7 表明 周几
switch (day) {
case 1:
console.log('周一')
break
case 2:
console.log('周二')
break
case 3:
console.log('周三')
break
case 4:
console.log('周四')
break
case 5:
console.log('周五')
break
case 6:
console.log('周六')
break
case 7:
console.log('周日')
break
}
switch 的穿透现象 (穿刺现象)
- 在书写 case 的时候, 没有书写 break
- 那么如果这个 case 符合条件那么就会执行它内部的代码
- 代码执行完毕后, 没有发现 break, 所以会继续向下执行
- 不管 下一个 case 条件是否满足
- 直到遇见下一个 break 或者 当前 switch 代码全都执行完毕
var day = 4 // 取值范围是 1~7 表明 周几
switch (day) {
case 1:
console.log('周一')
break
case 2:
console.log('周二')
break
case 3:
console.log('周三')
break
case 4:
console.log('周四') //输入4时,同时输出'周四','周五'
case 5:
console.log('周五')
break
case 6:
console.log('周六')
case 7:
console.log('周日')
default:
console.log('上述条件都不满足的时候, 执行')
}