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'語句慢」作爲一般性陳述... –