2014-01-21 2 views
1

Как узнать, какое условие в выражении if в JavaScript было правдой?Как узнать, какое условие было истинным в выражении if?

if(a === b || c === d){ console.log(correctValue) } 

Как я могу знать, если он был либо a === b или c === d?

Редактировать: Я хотел знать, был ли способ сделать это, кроме проверки каждого условия на его собственную инструкцию if.

+1

Почему это важно? – pgreen2

+0

Хотелось узнать, возможно ли это, я знаю какой-то JavaScript, но на самой поверхности, поэтому я подумал, что «это может существовать», искал его и ничего не нашел, поэтому я здесь. – Deviljho

+0

Вы можете вернуть значение? – Joe

ответ

2

Если вам действительно нужно знать, какое условие было верно, просто проверить их по отдельности:

if(a == b) { 
    console.log("a == b"); 
    return true; 
} else if(c == d) { 
    console.log("c == d"); 
    return true; 
} 

В качестве альтернативы, вы можете предпочесть что-то вроде этого:

var result; 
if ((a == b && result = "a == b") || (c == d && result = "c == d")) { 
    console.log(result); 
    return true; 
} 

Этот код фактически эквивалентно однако, я бы не рекомендовал использовать это в производственной системе. Гораздо труднее прочитать и угадать исходное намерение кода —, вероятно, человек, читающий это после того, как вы подумали, что result = должен был быть result ==. Также обратите внимание, что поскольку пустые строки являются ложными, вы должны убедиться, что строка, которую вы назначаете result, никогда не пуста, иначе она никогда не войдет в if -block.

+0

Любой способ сделать это не отдельно? – Deviljho

+0

Я думал, что может быть лучше, например if (a === b || c === d) {console.log (правдивый)}, но я думаю, что нет. – Deviljho

2

Вы не можете.
Если это имеет значение, это должно быть два разных условия.

if (a == b) { 
    // it was a == b 
    return true; 
} 

if (c == d) { 
    // it was c == d 
    return true; 
} 

Обратите внимание, что даже в этом случае, вы не будете знать, если оба или только один из этих условий истинно.
Если вы хотите знать, это как хорошо, вы хотите дополнительно if:

if (a == b && c == d) { 
    // a == b and c == d 
} else if (a == b) { 
    // just a == b 
} else if (c == d) { 
    // just c == d 
} 

return (a == b || c == d); 
+0

Если вы удалите «возврат» с первого, вы сможете узнать, истинны ли оба или только один, правильно? – Deviljho

+0

@ AdriánSalgado Не совсем, если я еще раз не проверил 'a == b' inside' c == d'. Вот почему я использую 'else if' в моем втором примере и заранее проверяю оба условия. –

+0

Я имею в виду, что вы могли бы пойти, если (a === b) {console.log ("a равно b");} if (c === d) {console.log ("c равно d"); } :) – Deviljho

Смежные вопросы