我有这种疯狂的条件,我只知道有更好的写作方式。这是伪代码:
if( A && B ){
console.log( 'do not show' );
}
if( A && C ){
console.log( 'show' );
}
if( A && D ){
console.log( 'do not show' );
}
if( A && E ) {
console.log( 'do not show' );
}
我真的很沮丧。
答案 0 :(得分:6)
这个怎么样:
if (A) {
if (B || D || E) {
console.log( 'do not show' );
}
if ( C ) {
console.log( 'show' );
}
}
如果你真的想为每个条件指定单独的任务,那么你可以使用它,但是如果你的任务只是上面的代码,它就会过于复杂。
var A = C = true;
var B = D = E = false;
function doWhen( cond, fn ) {
if ( cond === true ) {
return ( typeof fn === 'function' ? fn() : fn );
}
return undefined;
}
doWhen(A, function() {
[ [B, function() { console.log('b message') }],
[C, function() { console.log('c message') }],
[D, function() { console.log('d message') }],
[E, function() { console.log('e message') }] ]
.forEach(function(cond) {
doWhen.apply(null, cond);
});
});
答案 1 :(得分:2)
不会这样做:
if (A) {
if(B || D || E){
console.log( 'do not show' );
}
if( C ){
console.log( 'show' );
}
}
<强>更新强>
或只是为了好玩(如果你想要每个州)
switch((a << 0) | (b << 1) | (c << 2) | (d << 3) | (e << 4)) {
case 3: console.log("A && B"); break;
case 5: console.log("A && C"); break;
case 9: console.log("A && D"); break;
case 17: console.log("A && E"); break;
}
可以使用的JSFiddle:http://jsfiddle.net/LxvBZ/
答案 2 :(得分:1)
如果您确实需要分别评估B
,C
,D
和E
,这非常简单:
if( A ){
if( B ){
console.log( 'do not show' );
}
if( C ){
console.log( 'show' );
}
if( D ){
console.log( 'do not show' );
}
if( E ) {
console.log( 'do not show' );
}
}
现在,如果所有if
(在第一个之后)应该是else if
,那么这可以简化为:
if( A ){
if( B || D || E ){
console.log( 'do not show' );
}else if( C ){
console.log( 'show' );
}
}
答案 3 :(得分:1)
我愿意:
if ( A ) {
if( B || D || E ){
console.log( 'do not show' );
}
if( C ){
console.log( 'show' );
}
}
答案 4 :(得分:0)
if( A ){
var printOnLog = '';
if( B || C || E ){
printOnLog = 'do not show';
}
else if( C ){
printOnLog = 'show';
}
else {
//default action
}
console.log(printOnLog);
}
嗯,我认为如果这是真正的用途,就不可能有多种条件,否则如果&#34;为了避免无用。
如果可能的话(A&amp;&amp; B)&amp;&amp; (A&amp;&amp; C),只需使用普通&#34;如果&#34;
答案 5 :(得分:0)
你可以这样做:
if (A) {
if (C) {
console.log("show");
}
else if (B || D || E) {
console.log("do not show");
}
}
或者如果你愿意,可以这样:
if (A && C) {
console.log("show");
}
else if (A && (B || D || E)) {
console.log("do not show");
}
答案 6 :(得分:0)
嗯,三元运算符是一回事。您可以使用它来缩小代码。
要向三元运算符添加更多条件,请使用'? '指定条件和':'以指定其他条件。它必须以最终的其他条件结束,如下所示。
var output = ((A && B) || (A && D) || (A && E)) ? "do not show" : (A && C) ? "show" : "";
console.log(output);