Javascript switch语句失败

时间:2011-05-13 13:54:48

标签: javascript switch-statement

可能是一个非常愚蠢的问题,但是:这会在控制台中打印'yeeeeeees',但是在switch语句中会抛出Unknown步骤错误。

我做错了什么?

        if (step === 'menuLoaded') console.log('yeeeeeeeees');
        switch (step) {
            case 'menuLoaded':
                this.window.activate_side_menu();
                this.handleDomainFtp();
                break;
            case 'ftpStep1':
                this.handleDomainFtp(1);
                break;
            case 'ftpStep2':
                this.handleDomainFtp(2);
                break;
            case 'startMysql':
                alert('starting mysql');
                this.handleDomainMysqlList();
                break;
            case 'mysqlList':
                this.handleDomainMysql();
                break;
            case 'mysqlPage':
                this.handleDomainMysql(true);
                break;
            case 'done':
                run();
                break;
            default:
                throw new Error('Unknown step: ' + step);
                break;
        }

5 个答案:

答案 0 :(得分:1)

我得到的错误是TypeError: Object [object DOMWindow] has no method 'activate_side_menu' - 您确定在可用范围内的某处声明了该功能吗?

答案 1 :(得分:0)

由于显然没有其他方法可以解决我的问题,我只会自己回答。

问题在于以下代码。 后来我有另一个switch语句,抛出了完全相同的Error()。

像我说的那样,可能是傻事......

但是感谢每个人的时间!

答案 2 :(得分:0)

最有可能需要将'this'分配给'var self'并使用'self'代替。

答案 3 :(得分:0)

尝试使用没有“break”的默认语句

default:
            throw new Error('Unknown step: ' + step);
}

答案 4 :(得分:-2)

我很确定JavaScript的switch()不会接受字符串 - 你必须使用整数值。如果您想使用名称,请使用类似枚举的变量:

const step_menuLoaded = 0;
const step_menuFtp1 = 1;
const step_menuFtp2 = 2;
const step_startSql = 3;
...

<击>

您是否检查过字符串中不可打印字符的代码/来源?