JavaScript条件判断详解:从基础语法到高级技巧
作者:纸飞机时间:2026-10-25 19:47:28浏览:366
本文系统讲解JavaScript中的条件判断机制。涵盖if/else基础语法、三元表达式的简写技巧,以及利用||和&&运算符实现逻辑短路的高级用法。同时对比switch/case与对象映射、区间判断等优雅升级方案,并分析不同场景下的执行效率差异,帮助开发者写出更简洁高效的代码。
条件判断是编程中常用的控制流语句。
一、if/else语句
该语句用于根据不同的条件执行相应的操作。
代码示例如下:
if ('条件语句1') {
// 如果 条件语句1 为 true 执行该代码块
} else if ('条件语句2') {
// 如果 条件语句1 为 false 且 条件语句2 为 true 执行该代码块
} else {
// 如果 条件语句1 为 false 且 条件语句2 为 false 执行该代码块
}
当 if 语句后仅包含一条执行代码时,可以省略花括号。这意味着,若 if 语句未使用花括号,其作用范围仅限于紧随其后的那一条语句。
二、三元表达式
- 形式简写:条件 ? 真结果 : 假结果
- 其等价于:if(条件){真结果}else{假结果}
- 三元表达式使表达更为简洁,但在处理多条件逻辑时可能显得冗余。
var isShow = true;
isShow ? console.log(isShow ):console.log(isShow )
// true
需要注意的是,三元表达式内部不能使用 break、continue 等控制流程语句。
三、或(||)与 (&&)语句
这种用法既高级又优雅。
1. ||(逻辑或)
- 短路表达式:若第一个值为 true,则返回第一个值;若第一个值为 false,则返回第二个值。
- 默认转译:0、空字符串、null、false、undefined、NaN 均会被判定为 false。
console.log (2||1); //2
console.log ('a'||1);//'a'
console.log (''||1); //1
2. &&(逻辑与)
短路表达式:若第一个值为 true,则执行并返回 && 后的语句结果;若第一个值为 false,则直接返回 && 前面的值。
console.log (2 && 1); //1
console.log ('a' && 1);//1
console.log ('' && 1); // ''
四、switch/case语句
- 该语句仅能处理一个表达式(expression)。
- case 后面必须跟随常量,不能是表达式,即 switch 的判断条件只能与常量进行比较。
- 使用 break 的作用是跳出 switch 结构。
// add_step 与 case设定的常量值进行比较赋值
var change_level = 0;
switch(change_step){
case 5 : change_level = 1;
break;
case 10 : change_level = 2;
break;
case 12 : change_level = 3;
break;
case 15 : change_level = 4;
break;
default : change_level = 0;
break;
}
优雅升级 A
此方法利用对象属性值的方式进行映射。
var change_level={'5':1,'10':2,'12':3,'15':4}[change_step] || 0;
优雅升级 B
此方法同样适用于按数值区间进行判断的场景。
var change_step = 15;
var change_level =
(change_step == 15 && 4) ||
(change_step == 12 && 3) ||
(change_step == 10 && 2) ||
(change_step == 5 && 1) ||
0;
console.log(change_level);
总结
执行效率分析:
- switch case 会生成一个跳转表来指示实际 case 分支的地址,适用于多分支条件判断。
- switch case 的缺点在于只能处理字符或数字类型的变量(可通过上述升级方案解决)。
- 而 if…else 则需要遍历条件分支直到命中条件,适用于少量判断条件的场景。
到此这篇关于JavaScript条件判断及高级用法的文章就介绍到这了,更多相关js条件判断及高级用法内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!
作者最新文章
JS动态构建复杂嵌套JSON对象的方法
2026-11-05 15:41:52
JS负数取余为什么是负数?详解余数与模运算区别
2026-11-05 13:34:41
JS 解压出现乱码或报错怎么解决?
2026-11-05 12:32:38
JS 中 startsWith、indexOf 与正则判断字符串前缀的对比
2026-11-04 22:19:43
JS解析Excel后怎么将数据转换为JSON格式
2026-11-04 20:58:28
