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 }
虽然它比进行对象属性查找更具可读性。