我来自C#,它之间有很大不同 答:
var stringVal = "1";
switch (stringVal)
{
case "0" :
break;
case "1" :
break;
}
和b:
var intVal = 1;
switch (intVal)
{
case 0 :
break;
case 1 :
break;
}
B在C#中要快得多(因为String-Switch将从编译器转换为if-else-structure)。
它是否与JavaScript类似? (当然JS中只有数字类型)
并且 - 为了便于阅读 - 如果我想将它与一些枚举一起使用 - "相当于"在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语句对我来说更自然)
答案 0 :(得分:2)
我自己做了一个令人难以置信的丑陋测试
(look at:
https://jsfiddle.net/PutziSan/kzdwt8u2)
并在不同的浏览器上运行代码(结果如下),(所有浏览器今天都在最新版本上更新 - 2016年1月3日)
顺便提一下,那个边缘和IE只是荒谬可笑。 我猜测结果非常有趣 (我知道这种"测试"不是那么准确,但我认为他们可以给出一个暗示)看来,编译器会注意到Integer的切换,但它没有那么大的影响。
答案 1 :(得分:0)
它是否与JavaScript类似? (当然,JS中只有数字类型)
在javascript中,表达式几乎可以是任何东西,它不像在编译期间验证类型的C
,这里它是在“运行时”中计算的
这是主要区别。
非常详细的解释在MDN - Switch
中... expression的计算结果与输入表达式
的结果相同 (使用严格比较,=== )
......无论如何都有性能提升
这取决于您的浏览器及其JS引擎。