例如,而不是:
if (ext === "_st" || ext ==="_mt" || ext === "_00" ){
//do something
}
我直觉地期望以下内容也有效:
if (ext === ("_st" || "_mt" || "_00" )){
//do something
}
但这行不通。 有没有办法避免重复相同的(在这种情况下为"ext")变量以获得更压缩和高效的代码?
更新:我在询问之前进行了搜索,前 10-15 个建议中没有出现任何"重复"问题。相反,StackOverflow对不相关的错误重复项提出了错误的建议。
这是我的建议: 与其将问题标记为"重复",为什么不将它们与答案合并到一个具有直观标题的单个问题中?
感谢您的回答。
更新#2:这不是重复的。建议的问题的答案仅涉及OR优化,而我的问题更笼统,它指的是"逻辑表达式",而不是专门针对OR。我只是提供了一个OR示例。我特别问是否有一种方法可以避免在逻辑语句中重复主变量,无论是 OR、AND 等。
例如:给定var1
==var2
==var3
if (ext === var1 && ext === var2 && ext === var3 ){
//do something
}
var ext = "_00";
if (/^_st$|^_mt$|^_00$/.test(ext) ){
console.log("do something");
//do something
}
使用正则表达式这是可能的。
解释: 每个比较由 |(或)并括在^和$中以完全匹配,否则它将匹配其他地方。
let ext = "_mt";
if( ext.match( /_st|_mt|_00/g ) ) {
console.log("Yes : type 1");
}
if( ["_st", "_mt", "_00"].includes( ext ) ) {
console.log("Yes : type 2");
}
正如@Shily所说,您也可以使用数组和这种正则表达式