JavaScript 词条目录
前端Wiki/JavaScript/基础/流程控制

if 条件与 switch

条件判断让程序「分叉」。if...else if...else 适合按区间判断(如分数等级),条件从上往下依次检查,命中一个就不再往下看。

switch 适合「一个变量匹配多个固定值」的场景,比如根据星期几返回课程表。它用 === 严格比较,每个 case 结尾必须写 break,否则会「贯穿」到下一个 case 继续执行——某些场景可以故意利用贯穿(多个 case 共用一段逻辑),但初学阶段忘了写 break 是最常见的 bug 之一。所有 case 都不匹配时执行 default。

判断时注意:条件里的值会被转成布尔值,所以 if (arr.length) 就能判断「数组非空」,if (str) 就能判断「字符串不是空的」。

本节要点区间判断用 if,固定值匹配用 switch;switch 用 === 比较,忘写 break 会贯穿执行;条件里的值会自动转布尔,可利用假值简化判断。
JavaScript
const score = 85;

// if...else if...else:适合区间判断
if (score >= 90) {
  console.log('优秀');
} else if (score >= 80) {
  console.log('良好');
} else if (score >= 60) {
  console.log('及格');
} else {
  console.log('不及格');
}

// switch:适合匹配固定值
const fruit = '苹果';
switch (fruit) {
  case '苹果':
    console.log('3 元一斤');
    break;                 // 忘了 break 会继续往下执行!
  case '香蕉':
  case '芭蕉':             // 故意贯穿:两种水果同价
    console.log('2 元一斤');
    break;
  default:
    console.log('没有这种水果');
}

// 短路写法:条件成立才执行
score >= 60 && console.log('通过考试');