← 返回目录

9. if 分支判断语句

程序不能只会从上往下跑,还得看情况选路。用商城会员折扣这个真实例子,把三种 if 一次练透。

9.1 互动演示

会员等级: 原价:
选等级、输原价,点按钮看 if...else if 怎么分支。

9.2 知识点逐条讲解(配合代码)

① if 单分支:条件对才做,不对就跳过

就像"如果下雨,就带伞"——条件成立才行动,不成立就当没这回事。这就是只有一条路的单分支。

let stock = 12;      // 库存数量
let warnNum = 20;   // 预警线
if (stock < warnNum) {  // 如果库存比预警线还少
	console.log("【警告】库存不足,请及时补货"); // 就执行这句
}
// 库存够的话,上面这句根本不跑,直接跳过
		

② if...else 双分支:二选一,必走一条

像"如果及格就表扬,否则就批评"——两个结果里必选一个

if (stock < warnNum) {
	console.log("库存不足,请补货"); // 条件成立走这
} else {
	console.log("库存正常");       // 不成立走这
}
		

③ if...else if 多分支:会员折扣实战

如果有好几种情况(比如会员分四档),就用 if...else if 一个接一个。规则是从上往下挨个问,问中一个就执行、然后整个结束,后面的不再问。

let level = 2;          // 会员等级:0普通 1白银 2黄金 3钻石
let originPrice = 200;  // 原价
let discount = 1;       // 折扣,先默认不打折(1=原价)

if (level === 0) {
	discount = 1;       // 普通:不打折
} else if (level === 1) {
	discount = 0.95;    // 白银:95折
} else if (level === 2) {
	discount = 0.9;     // 黄金:9折
} else if (level === 3) {
	discount = 0.8;     // 钻石:8折
}

let pay = originPrice * discount;  // 折后价 = 原价 × 折扣
console.log("等级" + level + ",折后价" + pay);
		

如果你把多分支的顺序写反(比如先问"是不是会员"再问"是不是钻石"),可能一上来就被前面宽泛的条件接住,后面精确的分支永远轮不到。所以条件要从上往下,从具体到一般。作业让你换 level=0/1/3 分别试,就是练这个。

实战:用在哪 / 常见坑 / 怎么解决

① 可能在什么地方用:会员等级打折;成绩分段评级;库存低于预警线告警。

② 常见的问题:多分支顺序写反,宽泛条件先把精确分支接住了,后面永远走不到。

③ 解决思路:条件从窄到宽、从具体到一般排;写之前先在注释里画个流程图。

一句话记住:if 单分支只做一种;if...else 二选一;if...else if 从上往下问,问中即停;分等级/区间就用它