在 JS 中,确定字符串是否是众多选项之一更有效的是:与多个 OR 进行比较还是进行切换?

问题描述 投票:0回答:1

示例:我想查看按下的按键是否是 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

鉴于它们都在毫秒下执行,我想这里的教训是这并不重要,哈哈

javascript performance
1个回答
0
投票

@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 是更好的选择。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.