gpt4 book ai didi

JavaScript 性能开关(整数)与开关(字符串)

转载 作者:行者123 更新时间:2023-11-29 14:44:14 25 4
gpt4 key购买 nike

我来自 C#,它与
之间有很大的不同答:

var stringVal = "1";
switch (stringVal)
{
case "0" :
break;
case "1" :
break;
}


乙:

var intVal = 1;
switch (intVal)
{
case 0 :
break;
case 1 :
break;
}

B 在 C# 中要快得多(因为 String-Switch 将从编译器转换为 if-else-structure)。

它在 JavaScript 中类似吗? (当然JS中只有number-type)

并且 - 为了可读性 - 如果我想将它与 JS 中的一些枚举“等效”一起使用(如此处所述 http://stijndewitt.com/2014/01/26/enums-in-javascript/ ),使用时是否有性能改进

var caseEnum = {
firstCase : 0,
secCase : 1
}

var enumVal = caseEnum.secCase ;
switch (enumVal )
{
case caseEnum.firstCase :
break;
case caseEnum.secCase :
break;
}

?

(我知道我可以用对象字面量来做,但是整数的 switch 语句对我来说更自然)

最佳答案

我自己做了一个令人难以置信的丑陋测试
(查看: https://jsfiddle.net/PutziSan/kzdwt8u2)

并在不同的浏览器上运行代码(结果如下),(所有浏览器都更新到今天的最新版本 - 03.01.2016)

顺便提一下,edge 和 IE 实在是太荒谬了。
我想结果真的很有趣。
(我知道这种“测试”不是那么准确,但我认为他们可以给出提示)

看起来,编译器注意到了 Integer 的切换,但它并没有那么大的影响。

Chrome :
chrome

火狐:
firefox

边缘:
edge

即:
IE

关于JavaScript 性能开关(整数)与开关(字符串),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34571231/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com