Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript-if语句,带有几个简写符号条件_Javascript_If Statement_Conditional - Fatal编程技术网

Javascript-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语句,它们需要很多条件,我希望以更有效的方式编写它们,并使用“速记符号”以提高可读性

例如,我有一个if语句:

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 ***/
}