如何更简洁地判断变量是否等于"THIS"或"THAT"?
嘿,这个问题问到点子上了!很多开发者都想把这种重复的多值相等判断写得更清爽,我来给你分享几种实用的简洁方案,每种都有适用场景:
ES6+ 最直观方案:数组
includes()方法
这是现在最常用的简洁写法,代码一眼就能看懂,扩展性还强——以后要加新的判断值,直接往数组里塞就行:if (["THIS", "THAT"].includes(sampleVariable)) { // 你的业务逻辑代码 }includes()会直接返回布尔值,完美替代原来的或运算判断,非常适合大多数场景。兼容旧环境方案:数组
indexOf()方法
如果你的项目需要兼容ES6之前的老环境,可以用这个替代写法,原理是检查变量在数组中的索引是否存在:if (["THIS", "THAT"].indexOf(sampleVariable) !== -1) { // 你的业务逻辑代码 }注意要判断索引不等于
-1(因为找不到时indexOf会返回-1),不过现在现代浏览器基本都支持ES6了,除非有特殊需求,不然优先选includes()。高性能方案:对象属性判断
如果你需要判断的值特别多(比如十几个甚至更多),用对象字面量的方式性能更好(查找是O(1)时间复杂度):if ({ THIS: true, THAT: true }[sampleVariable]) { // 你的业务逻辑代码 }原理是利用对象属性的存在性——如果
sampleVariable是对象的键,就会返回对应的true,否则返回undefined(布尔判断里是false)。分支友好方案:switch 语句
如果以后可能要针对不同的值写不同的逻辑,switch写法虽然不算最紧凑,但扩展性更强:switch(sampleVariable) { case "THIS": case "THAT": // 匹配到两个值时执行的逻辑 break; default: // 其他情况的逻辑 }
最后提一句:你原来的写法if(sampleVariable == "THIS" || sampleVariable == "THAT")其实完全没问题,可读性非常高,团队协作时反而更容易被所有人理解。要不要换简洁写法,主要看你的项目环境和实际需求,平衡简洁性和可读性才是关键~
内容的提问来源于stack exchange,提问作者TheKingElessar

