javascript开关()或if()

如果我这样做会更好:

if(message == 'redirect')
{
    is_valid.accepted = true;
}
else if(message == 'invalid id')
{
    is_valid.accepted = false;
}
else
{
    is_valid.accepted = false;
}

或者我是这样做的

switch (message)
{
case 'invalid id':
default:
    is_valid.accepted = false;
    break;
case 'redirect':
    is_valid.accepted = true;
    break;
}
如果您预见到需要添加大量新案例,则可以使用switch.

如果您不会添加许多新案例,我可能会这样做,为清楚起见:

is_valid.accepted = message=='redirect';

(另请注意,您对’无效ID’的检查无效)

然而,如果你不得不添加新的东西,请注意它是多么好,你不必重复自己不必重复自己不必重复自己,还有性感格式:

switch (message)
{
    case 'invalid id':
    case 'penguin invasion':
    case 'the internet is down':
    case 'error not enough caffeine':
        is_valid.accepted = false;
        break;

    case 'redirect':
    case 'upvote me':
    case 'vip':
    case 'flamewar':
        is_valid.accepted = true;
        break;

    default:
        is_valid.accepted = false;
        // perhaps log or something
}

想象一下所有那些丑陋的其他人 – 如果你不这样做的话.

边注:
如果你有非常复杂的规则,但仍然是白名单 – 单一标志范例的黑名单,那么:

var blacklist = ['invalid id', 'penguin invasion', 'the internet is down' 'error not enough caffeine'];
var whitelist = ['redirect', 'upvote me', 'vip', 'flamewar'];

is_valid.accepted = whitelist.indexOf(message)!=-1;

如果要动态构建白名单,也可以执行此操作.

https://stackoverflow.com/questions/5711347/javascript-switch-or-if

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:javascript开关()或if()