2016-03-27 3 views
1

результат, который я хочу, является вторым, если инструкция else, если код не в списке, а затем предупреждение, я не понимаю, почему первое, если инструкция else не работает, я подумал, что просто обратное второе, если инструкция else? я неправильно понимаю что-то?if else statement reverse

https://jsfiddle.net/e6qohvhc/

var code = '500'; 
 

 
    if (code != '400' || code != '401' || code != '500') { 
 
    \t console.log('true'); // I don't want it alert here 
 
    } 
 
    
 
    
 
    if (code == '400' || code == '401' || code == '500') { \t 
 
     // I have to always leave this empty line ... 
 
    } else { 
 
    console.log('second true'); 
 
    }

+1

Я не уверен, чтобы понять ваш вопрос, но логическое значение! (А || Ь)! &&! Б –

ответ

4

Это связанно с De Morgan's laws:

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

!a становится a, b становится !b, становится ||&&, становится &&||.

Так инверсия вашего второго if будет что-то вроде

(code != '400' && code != '401' && code != '500') 
+0

спасибо за разъяснение! – user1575921

4

Вы, возможно, потребуется пересмотреть Morgan's laws.

В принципе, если вы хотите, чтобы свести на нет (a || b || c) вам нужно использовать (!a && !b && !c)

Надеются, что это помогает,

+0

спасибо за ответ, так что я должен это делать '(код! =«400»&& код ! = '401' && code! = '500') ' – user1575921

0
if(code != '400' || code != '401' || code != '500'){} 

всегда будет истинным, так как переменная косяк быть равна нескольким значениям

0

Проблема заключается в || Первое, если заявление для 500 всегда верно, поэтому у вас проблемы/ Сделайте это таким образом, и он должен работать так, как вы этого хотели (проверьте это в лету ур скрипка);

var code = 500; 
alert(code); 
console.log(code); 
if (((code !== 400) || (code !== 401)) && (code !== 500)) { 
    console.log('true'); 
    alert("123"); 
} 

else if ((code == 400) || (code == 401) || (code == 500)) { 
    alert("456"); 
} else { 
console.log("second true"); 
alert("else"); 
}