2012-11-26 4 views
1

я сам состояние IF,Javascript странно Если оператор не работает

tempNum2 = 4, tempNum2 = 3 

answer1 = 1, answer2 = 3, answer3 = 2, answer4 = 4 

if((tempNum2== answer2 || tempNum1== answer2) && 
    (tempNum2!= answer1 || tempNum1!= answer1) && 
    (tempNum2!= answer4 || tempNum1!= answer4) && 
    (tempNum2!= answer3 || tempNum1!= answer3) && 
    (asnwer5 == 0)) 
{ 
    console.log("Correct"); 
} 

теперь смотрит на, если заявление, tempNum2 равно ANSWER4, но в моей консоли Firefox, он печатает Correct, глядя на if, он должен потерпеть неудачу. Поскольку tempNum2 равен 4, а answer4 = 4, значит, это утверждение if должно завершиться неудачно, что не так с этим утверждением? Не беспокойтесь ни о чем другом, я уверен, что у меня есть это, если утверждение неверно.

Холст

+0

у вас есть опечатка: asnwer5 == 0. shoud not be answer5 == 0? где вы все равно инициализируете answer5? – giorashc

+2

вы переменный 'asnwer5' не существует! – silly

+1

Где находится tempNum1? – SubRed

ответ

2

Вы должны иметь один из всех 4-х или оговорок, как вы используете и везде. Плюс я не знаю, что такое ответ 5, поэтому я не могу говорить с этим, но он также должен быть правдой, однако он определен. Возможно, если вы измените свой && на ||,, он будет работать, но я не знаю, какую логику вы пытаетесь использовать.

(false || false)&& 
(true || true)&& 
(true || false)&& 
(true|| true) 

false && true && true && true 

Я не знаю, какую логику вы хотите точно, но ваш код делает именно то, о чем вы говорили. В самом деле:

(tempNum2== answer2 || tempNum1== answer2) 

Итак, если tempNum2= tempNum1= answer2, эта логика не всегда возвращает ложь.

+0

Да, меняя мою || к && исправил мою проблему :) приветствия. – Canvas

+1

Я не уверен, действительно ли это правильный ответ, ваша логика довольно запутанна, и мне потребовалось некоторое время, чтобы расшифровать. Что вы пытаетесь достичь? Пожалуйста, отредактируйте свой вопрос с ответом на этот вопрос. – PearsonArtPhoto

0

В 2º состоянии Если с tempNum2 составляет 4 и Ответ4 = 4

(tempNum2!= answer4 || tempNum1!= answer4) 

это возвращение правда потому tempNum1!= answer4 (3! = 4).

Позволяет analise вы если обусловливает:

1º Состояние:

(tempNum2== answer2 || tempNum1== answer2) 

возвращение правда так tempNum1== answer2 истинно (3 == 3)

3о Состояние:

!

возвращает true так tempNum1 = Ответ4 истинно (! 3 = 4)

4º Состояние:

(tempNum2!= answer3 || tempNum1!= answer3) 

возвращает правда, потому что (! tempNum2 = answer3) истинно (4 ! = 2).

Если asnwer5 = 0 это (asnwer5 == 0) будет истинным, как и другие условия.

Я использую ошибку, и вы принимаете tempNum2 = 4, tempNum2 = 3 Вы имеете в виду tempNum2 = 4, tempNum1 = 3. Потому что согласно вашему тексту tempNum2 is equal to answer4.

0

Я думаю, вы должны написать tempNum1 = 4 в первой строке ..

tempNum1 = 4, tempNum2 = 3

поэтому код:

tempNum1 = 4, tempNum2 = 3 

answer1 = 1, answer2 = 3, answer3 = 2, answer4 = 4 

if((tempNum2== answer2 || tempNum1== answer2) && 
    (tempNum2!= answer1 || tempNum1!= answer1) && 
    (tempNum2!= answer4 || tempNum1!= answer4) && 
    (tempNum2!= answer3 || tempNum1!= answer3) && 
    (asnwer5 == 0)) 
{ 
    console.log("Correct"); 
} 
1

tempnum2!= answer4 || tempNum1!=answer4 является истинным во все дни, потому что 1.) tempnum2 равно 3 (первая строка) и 2) tempNum1 является не определен. Убедитесь, что ваша первая строка верна;).

/E: У вас есть серьезные опечатки в вашем коде. Вы должны исправить их.

  • Вы определили tempNum2 дважды. Вы имели в виду tempNum1 и tempNum2?
  • Вы написали (asnwer5 == 0). Возможно, вы имели в виду (answer5 == 0)?
0
(tempNum2!= answer4 || tempNum1!= answer4) && 

Это оценивается как истина до сих пор, так как предположительно tempNum1 неопределен - таким образом, неадекватный к ANSWER4.

Помните о различиях между вашими логическими операторами! или вернется в исходное состояние, если выполнено только одно условие; и в вашем примере это всегда будет удовлетворено, если определенные переменные не определены - в отношении тестов неравенства в любом случае.

Общая структура использования операторов if(), подобных этому, оставляет желать лучшего. Это влияет на читаемость больше всего на свете. Я бы серьезно подумал о реорганизации вашего кода. Поддержание этого не будет забавным и не будет отлаживать небольшие ошибки - как вы только что пережили.

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