示例:我想查看按下的按键是否是 4 个不同按键之一。 选项 1:
if(e.key === "ArrowUp" ||
e.key === "ArrowDown" ||
e.key === "Control" ||
e.key === "Escape" || ){
// do stuff
}
对
switch(e.key){
case "ArrowUp":
case "ArrowDown":
case "Control":
case "Escape":
// do stuff
break;
default:
break;
}
有很多资源表明 switch 语句比多个 if 更高效。但是带有多个 OR 的单个 if 与 switch 语句相比又如何呢?
编辑:有人建议运行个人测试,所以这是我的测试:
function testOr(k){
if(k === "ArrowUp" ||
k === "ArrowDown" ||
k === "Control" ||
k === "Escape" ){
return true
}
}
function testSwitch(k){
switch(k){
case "ArrowUp":
case "ArrowDown":
case "Control":
case "Escape":
return true
break;
default:
break;
}
}
let start = Date.now()
testOr("Escape")
console.log(`or with escape: ${Date.now() - start}`)
// prints 0ms
start = Date.now()
testSwitch("Escape")
console.log(`or with switch: ${Date.now() - start}`)
// prints 0ms
鉴于它们都在毫秒下执行,我想这里的教训是这并不重要,哈哈
@Null Salad,正如您所提到的,switch-case 语句通常比 if-else 语句性能更高,特别是在处理大型 if-else 梯子时(与等效的 switch 表示相比)。您可以在[此处]找到更多详细信息[https://www.oreilly.com/library/view/high-performance-javascript/9781449382308/ch04.html#:~:text=Generally%20speaking%2C%20if%2Delse% 20是,是%20%20最%20最佳%20选择。]
在这种特殊情况下,如果条件数量很少,则 if-else 和 switch-case 之间的性能差异可以忽略不计。唯一重要的因素是可读性,就我个人而言,我发现 if-else 是更好的选择。