我想知道动态类型语言在找到匹配的案例标签时的行为方式。它会继续评估尚未比较的其他标签值吗? (查找重复的案例标签或输入错误)。
常见的动态类型语言在那里表现如何?
答案 0 :(得分:1)
我只能在这里说JavaScript,但是JavaScript会首先检查两个操作数是否属于同一类型,然后检查值,从而搜索匹配的标签。如果找到匹配项,switch case将执行与标签关联的语句并中断switch语句(如果找到break语句)。
示例:
notANumber='0'
switch (notANumber) {
case 0:
alert("It's a number, Jim.");
break;
case '0':
alert("It's a string, Jim.");
break;
}
这将显示弹出窗口It's a string, Jim.
。它实际上与C开关没什么不同(遗憾的是 - )。
修改强>
这里使用===
运算符进行比较,它不仅测试值,还测试类型。如果使用==
运算符,则只会测试操作数的值(这将导致第一种情况为真)。
答案 1 :(得分:1)
有两种众所周知的切换方法,与动态无关,但案例标签通常是文字。
发生的事情取决于失败。
隐式直通会执行代码中案例顺序匹配的所有情况。
显式掉线会执行第一个匹配的情况,除非您明确跳转到另一个可以在交换机中的任何位置的案例标签,否则不会执行其他情况。