【发布时间】:2011-10-07 17:09:46
【问题描述】:
我有这两个功能,我想知道哪个更快。我假设第一个,但如果我有数百个案例要评估呢?
function isSpecialKey(k) {
switch (k) {
case 9:
return true;
break;
case 16:
return true;
break;
case 17:
return true;
break;
case 18:
return true;
break;
case 20:
return true;
break;
case 37:
return true;
break;
case 38:
return true;
break;
case 39:
return true;
break;
case 40:
return true;
break;
default:
return false;
break;
}
}
function isSpecialKey(k) {
var arr = [9, 16, 17, 16, 8, 20, 37, 38, 39, 40]
for (i = 0; i < arr.length; i++) { if (k == arr[i]) { return true; } }
return false;
}
【问题讨论】:
-
你可以自己做一些简单的基准测试,将它们放在一个循环中,并在两种方法之间交替
-
另一种变体是 var specialKeyBools = [0,0,0,0,0,0,0,,0,1,1,0,0,0,0,0,0,1 ,...];函数 isSpecialKey(k) { return sepcialKeyBools[k];还加快了将您的数组放在函数之外的速度,因此它只发生一次。 (但另一位评论者是“最正确的”:试试看!获取数据。)
标签: javascript