javascript switch语句出问题

Abd*_*han 4 javascript switch-statement


elmid = "R125";

switch(true){

    case elmid.match(/R125/):
      idType = "reply";
    break;

}

alert(idType);  // Returns undefined

-------------------BUT----------------------

elmid = "R125";

if (elmid.match(/R125/)){idType = "reply";}

alert(idType);  // Returns "reply"


使用swtich返回undefined但使用if返回预期值,是什么导致交换机失败?为什么会这样?我在这做错了什么?可以任何人解释为什么我得到不同的结果=).

注意:在这种情况下没有建议使用if语句我知道,我的问题简明扼要,因此在switch语句中不仅有1个案例.

Ano*_*on. 10

elmid.match(/R125/)
Run Code Online (Sandbox Code Playgroud)

这将返回实际的正则表达式匹配,而不是 true或false.

当您编写if语句并使用时==,可以执行一些基本类型转换,以使其按预期工作.Switch语句使用identity comparison(===),因此这不起作用.

如果你想这样做,请改用regex.test()(它返回一个布尔值).

case /R125/.test(elmid):
Run Code Online (Sandbox Code Playgroud)