Switch Case在IE中抛出错误

时间:2013-12-31 15:12:33

标签: javascript internet-explorer switch-statement

以下是代码:

function addMethods(statusId) {
    var methods = {};
    if (typeof currentUser !== 'undefined') {
        if (currentUser.isAdmin) {
            switch(statusId) {
                case "A":
                    methods.deactivate = true;
                    methods.delete = true;
                    methods.edit = true;
                    break;
                case "P":
                    methods.activate = true;
                    methods.deactivate = true;
                    methods.delete = true;
                    methods.edit = true;
                    break;
                case "D":
                    methods.activate = true;
                    methods.deactivate = true;
                    break;
                case "I":
                    methods.activate = true;
                    methods.delete = true;
                    break;
                default:
                    break;
            }
        } else if (currentUser.userBelongsToCompany) {
            switch(statusId) {
                case "A":
                    methods.deactivate = true;
                    break;
                case "P":
                    methods.activate = true;
                    methods.deactivate = true;
                    methods.edit = true;
                    break;
                case "I":
                    methods.activate = true;
                    break;
                default:
                    break;
            }
        }
    }

    return methods;
}

错误:

SCRIPT1010: Expected identifier 

奇怪的是,当它试图更新methods.delete:

时会抛出错误
function addMethods(statusId) {
    var methods = {};
    if (typeof currentUser !== 'undefined') {
        if (currentUser.isAdmin) {
            switch(statusId) {
                case "A":
                    methods.deactivate = true;
                    methods.delete = true;

4 个答案:

答案 0 :(得分:3)

您使用关键字“delete”作为属性名称,并且这不是真正有效的(在某些JavaScript环境中)。你可以这样编码:

    methods["delete"] = true;

答案 1 :(得分:1)

delete是JavaScript中的新保留关键字,不应用作标识符。将其重命名为其他内容

但是你可以使用括号表示法

methods["delete"] = true;

答案 2 :(得分:1)

“delete”是您应该重命名的保留关键字。

如果您使用http://www.jshint.com/之类的内容,则有助于识别错误和语法问题。

答案 3 :(得分:1)

“delete”是大多数语言中的保留关键字,在这种情况下,您应该使用

methods['delete'] = true;

或者您可以重命名“删除”功能。