Javascript简写如果

if (event.keyCode === 38 || event.keyCode === 33 || event.keyCode === 40 || event.keyCode === 34) { } 

如何简写这段代码? 请记住条件switch语句很慢 。

我想做点什么

 if (event.keyCode === 38 || 33 || 40 || 34) 

我实际上建议使用开关。 一般的经验法则是

  • 1或2个值:使用if
  • 3到10个值:使用开关
  • 11或更多:使用数组查找

但是既然你正在使用jQuery,你可以简单地做到:

 jQuery.inArray(event.keyCode, [38,33,40,34]) 

使用纯JavaScript,你可以这样做:

 if ([38,33,40,34].indexOf(event.keyCode) >= 0) { ... } 

但请记住,此方法是随ECMAScript 5引入的,因此某些旧版浏览器不支持此方法。

你也可以这样做,这也适用于旧的浏览器:

 if ({38:1,33:1,40:1,34:1}[event.keyCode]) { ... } 

您可以使用对象查找。

 if ({33:true,34:true,38:true,40:true}[event.keyCode]) { ... } 

你可以使用正则表达式,虽然我不确定它是否必然比switch语句更快。

 if (/^(38|33|40|34)$/.test(event.keyCode)) { // Some code here } 

虽然它比进行对象属性查找更具可读性。