JavaScript切换语句

Joe*_*man 10 javascript

我在编写的一些JavaScript中遇到问题,其中Switch语句似乎没有按预期工作.

switch (msg.ResultType) {
  case 0:
    $('#txtConsole').val("Some Val 0");
    break;
  case 1:
    $('#txtConsole').val("Some Val 1");
    break;
  case 2:
    $('#txtConsole').text("Some Val 2");
    break;
}
Run Code Online (Sandbox Code Playgroud)

ResultType是一个0-2的整数值,我可以在FireBug中看到它.在所有情况下,交换机将控制权转移到最终的中断语句,这意味着完全跳过所有逻辑.我错过了什么?

Jua*_*ano 19

我确信一个开关在Actionscript中使用===进行比较,因为JS和AS都遵循ECMAScript标准,我想这同样适用于JS.我的猜测是,这个值实际上不是一个数字,而是一个字符串.

您可以尝试在交换机中使用parseInt(msg.ResultType)或在案例中使用字符串.

  • 总是指定parseInt的第二个参数!它是基数,所以你可能需要:parseInt(msg.ResultType,10); 如果你不提供它,它将尝试猜测基数并且会发生可怕的事情. (8认同)
  • 078也将被解释为八进制:parseInt("078")返回7. parseInt("08")返回0.这些可能是几乎不可能找到错误的来源. (2认同)