ian*_*ace 2 javascript if-statement switch-statement
如果我这样做会更好:
if(message == 'redirect')
{
is_valid.accepted = true;
}
else if(message == 'invalid id')
{
is_valid.accepted = false;
}
else
{
is_valid.accepted = false;
}
Run Code Online (Sandbox Code Playgroud)
或者我是这样做的
switch (message)
{
case 'invalid id':
default:
is_valid.accepted = false;
break;
case 'redirect':
is_valid.accepted = true;
break;
}
Run Code Online (Sandbox Code Playgroud)
switch如果您预见到需要添加大量新案例,则可以使用.
如果您不会添加许多新案例,我可能会这样做,为清楚起见:
is_valid.accepted = message=='redirect';
Run Code Online (Sandbox Code Playgroud)
(另请注意,您对'无效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
}
Run Code Online (Sandbox Code Playgroud)
想象一下所有那些丑陋的其他人,如果你不这样做的话.
旁注:如果你有非常复杂的规则,但仍然是白名单 - 单一标志范例的黑名单,那么:
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;
Run Code Online (Sandbox Code Playgroud)
如果要动态构建白名单,也可以执行此操作.