如何简化JavaScript中的OR条件判断?
简洁优雅的多值条件判断写法
你提到的state === ('su' || 'ja' || 'fa')这种写法没法实现你想要的效果哦——因为逻辑或||会返回第一个“真值”,这里'su'本身就是真值,所以这个表达式等价于state === 'su',完全忽略了后面的'ja'和'fa'。
给你几种更简洁优雅的替代方案:
最推荐:使用数组的
includes方法
这是现代JS里最直观简洁的写法,可读性拉满:['su', 'ja', 'fa'].includes(state)includes会直接返回布尔值,判断state是否在数组中,完美替代多个||的判断。兼容旧环境:用
indexOf
如果你的代码需要兼容IE这类不支持includes的旧环境,可以用indexOf:['su', 'ja', 'fa'].indexOf(state) !== -1当
state在数组中时indexOf会返回它的索引(非-1),反之返回-1,以此来判断是否匹配。高频场景优化:用Set
如果这个判断需要频繁执行,用Set的查找性能会比数组更好:// 先定义一次,重复使用 const validStates = new Set(['su', 'ja', 'fa']); // 判断时 validStates.has(state)Set的
has方法是O(1)时间复杂度,数组的includes是O(n),高频调用时差异会很明显。
内容的提问来源于stack exchange,提问作者Max Wolfen
相关产品推荐
相关产品推荐

