if (event.keyCode === 38 || event.keyCode === 33 || event.keyCode === 40 || event.keyCode === 34) {
}
如何缩短这段代码?请记住,有条件的switch
statements are slow。Javascript速记如果
我要像做
if (event.keyCode === 38 || 33 || 40 || 34)
if (event.keyCode === 38 || event.keyCode === 33 || event.keyCode === 40 || event.keyCode === 34) {
}
如何缩短这段代码?请记住,有条件的switch
statements are slow。Javascript速记如果
我要像做
if (event.keyCode === 38 || 33 || 40 || 34)
其实,我建议使用开关。所述general rule of thumb是
但是,因为你使用jQuery,你可以简单地做:
jQuery.inArray(event.keyCode, [38,33,40,34])
条件语句很慢。无论如何,你可以提供一个开关标记吗? –
超,请阅读我提供的链接。它解决了关于什么是最快的问题。 – corsiKa
对于这个问题中提到的案例'switch'没有什么好的方法。 –
使用纯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]) {
...
}
谁投下了这个(现在-1)?谨慎留下解释?今天很多下调似乎都发生在整个网站上,我不得不复习一些完全有效的Q和As被标记为“低质量”的一些白痴。 –
我可能会使用'1'而不是'true'来缩短它。 –
@BlueSkies肯定,但由于重要的价值是数字,我希望他们与样板更加明显。 –
您可以使用正则表达式,但我不确定这是否必然比switch语句更快。
if (/^(38|33|40|34)$/.test(event.keyCode)) {
// Some code here
}
虽然它比做对象属性查找更可读。
'请记住,有条件的开关语句慢'咦? – SLaks
你想缩短它为什么?执行时间处理时间?字符数量?实际上你有什么问题? – jcsanyi
是的,你能解释一下吗?我记得在某些情况下Mozilla的实现中导致'switch'比'if' /'else'慢的错误,但我不明白“条件'switch'语句慢”作为一般性陈述... –