什么是分支语句?
- JS在执行的时候,是按照从上往下的顺序执行的
- 所以我们书写的所有代码都会执行, 区别就是执行顺序的问题
- 所以分支语句的一个核心就是给了我们 基于某一个条件决定执行某一段代码的能力
1. 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:
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语句的难点不是如何选择语法,难点是 if 语句的条件如何书写
2. switch语句
主要用于某一个变量的具体值, 做判断 (全等 ===)
switch (变量) {
case 100:
当变量的值 === 100 的时候会执行
break;
case 101:
当变量的值 === 101 的时候会执行
break;
default:
当上述条件都不满足的时候, 执行
}
switch 的穿透现象 (穿刺现象)
在书写 case 的时候, 没有书写 break,如果这个 case 符合条件就会执行它内部的代码。代码执行完毕后, 没有发现 break, 所以会继续向下执行,不管下一个 case 条件是否满足直到遇见下一个 break 或者当前 switch 代码全都执行完毕。
// 用户输入月份 判断当月有几天
var m = prompt("请输入一个月份") - 0
var y = prompt("请输入一个年份") - 0
switch (m) {
case 2:
// 根据用户输入的年份 决定输出 28 还是 29
if (y % 4 === 0 && y % 100 !== 0 || y % 400 === 0) {
console.log('29')
} else {
console.log('28')
}
break
case 4:
case 6:
case 9:
case 11:
console.log('30天')
break
default:
console.log('31天')
}
3. 三目运算符
- 三元表达式 (三元运算符/三目运算符/问号冒号表达式)
- 也是分支语句的一种, 对 if 语句的一个优化
- 语法: 条件 ? 条件为真的时候执行的代码(只有一行) : 条件为假的时候执行的代码
var box = 1
var msg = box === 1 ? '成功' : '失败'
console.log(msg)