Javascript-if语句,带有几个简写符号条件
我的脚本中有几个if语句,它们需要很多条件,我希望以更有效的方式编写它们,并使用“速记符号”以提高可读性 例如,我有一个if语句:Javascript-if语句,带有几个简写符号条件,javascript,if-statement,conditional,Javascript,If Statement,Conditional,我的脚本中有几个if语句,它们需要很多条件,我希望以更有效的方式编写它们,并使用“速记符号”以提高可读性 例如,我有一个if语句: if (x === 'abc' || x === 'def' || x === 'ghi' || x ==='jkl') { /*** some code ***/ } 所以我用indexOf和array编写了它,但我不确定这是否是最好的方法: if (['abc', 'def', 'ghi' ,'jkl'].indexOf(x) > -1) {
if (x === 'abc' || x === 'def' || x === 'ghi' || x ==='jkl') {
/*** some code ***/
}
所以我用indexOf和array编写了它,但我不确定这是否是最好的方法:
if (['abc', 'def', 'ghi' ,'jkl'].indexOf(x) > -1) {
/*** some code ***/
}
我几乎可以肯定还有其他更干净、更快速的方法……这确实是一个可读性问题。当您在五个月内阅读相同的代码时,什么最有意义
x === 'a' || x === 'b' || x === 'c' || x ==='d'
或
我会使用长的“or”表达式,因为它非常清楚明确地告诉您代码在做什么。但是,我会将该表达式包装在函数中,以使代码的其余部分更具可读性
例如:
isSpecialLetter = function (x){
return x === 'a' || x === 'b' || x === 'c' || x ==='d';
}
if(isSpecialLetter(x)){
//More code
}
您的数组可读且易于修改。如果以后选择将数组作为参数,它还使您能够将其作为参数 如果您正在使用ES6,您可能需要使用:
在这种情况下,担心性能是过早的优化。如果必须使用ES5,那么
if(~['abc','def','ghi','jkl'].indexOf(x)){…}
或者更具表现力一点
如果(!!~['abc','def','ghi','jkl'].indexOf(x)){…}
你所拥有的看起来最好。你也可以做一个切换
谢谢你的回答。就我而言,我不能用‘abcd’来代替,这只是一个例子。如果我使用a/(a | b | c | d)/.test(x),它更好还是一样?如果你必须多次查找,使用键值会更错误在你的示例中,我更喜欢数组-它更简洁,更好地传达意图:读者阅读“x在这组值中”,而不是“a是x或b是x或c是x或d是x…”对于更大的值集,它也可以更好地扩展。令我惊讶的是,有些人似乎认为复数或分句更具可读性。在这里担心性能还为时过早。感谢您的回答和有关ES6.include()
的有用提示。我以后一定会用的。
isSpecialLetter = function (x){
return x === 'a' || x === 'b' || x === 'c' || x ==='d';
}
if(isSpecialLetter(x)){
//More code
}
if (['abc', 'def', 'ghi', 'jkl'].includes(x)) {
/*** some code ***/
}