为什么我的switch语句不匹配任何情况?

时间:2011-03-23 10:12:15

标签: javascript regex

当我使用 switch语句时, none 的案例与'prefix'匹配。 但如果我用 if-else 替换switch语句,一切正常。 为什么呢?

谢谢

//UPDATED
//el is DIV element. For example el.id='mph_4';
var prefix = /^[a-z]+/.exec(id);
//------------- SWTICH -------------------------
switch (prefix) {
    case 'mph':
        return 1;
    case 'ph':
        return 2;
    case 'mh':
        return 3;
}
//---------------IF-ELSE------------------------
 if (prefix == 'mph') {
        return 1;
    }
    else if (prefix == 'ph') {
        return 2;
    }
    else if (prefix == 'mh') {
        return 3;
    }

2 个答案:

答案 0 :(得分:5)

RegExp.exec()返回一个数组。所以prefix实际上是数组而不是字符串。如果您确定exec返回单个字符串,则可以将switch语句更改为:

switch (prefix[0]) {
    case 'mph':
        return 1;
    case 'ph':
        return 2;
    case 'mh':
        return 3;
}

答案 1 :(得分:-1)

请记住使用switch-case- break