2013-09-20 3 views
-1

я ударил с некоторыми простыми, если еще проверкаJavascript множественным или проверка состояния

var IsCompanyContacttitleUpdate = false; 
var ContactStatus = -1; 

if ((IsCompanyContacttitleUpdate == false) && (ContactStatus == 2 || 3 || 4)) 
{ 
    alert('inside if'); 
} 
else if (IsCompanyContacttitleUpdate == false && ContactStatus == 2) { 
    alert('inside else if'); 
} 
else { 
    alert('yup yup else'); 
} 

В этом случае я, как ожидается, выполнить еще часть. но его не уволили. Пожалуйста, помогите мне решить этот ... Спасибо заранее см скрипку http://jsfiddle.net/vuHYn/1/

+0

Вау, правда? Логические операторы должны быть одной из первых вещей, которые вы изучаете. – DevlshOne

+1

Во всяком случае, второе предложение 'if' (' else if (IsCompanyContacttitleUpdate == false && ContactStatus == 2) ') никогда не будет достигнуто, потому что первый' if' уже возвращает true в этом состоянии. –

ответ

6

Это ContactStatus == 2 || 3 || 4 недействителен (может быть недействительным не правильное слово, чтобы быть более точным, скажем, что это не делает то, что вы думаете он делает)

для вашего сценария вы должны будете использовать

ContactStatus == 2 || ContactStatus == 3 || ContactStatus == 4 

Ваш код может быть tranlated к

ContactStatus == 2 || true || true 

И это всегда так.

+0

Большое вам спасибо. – Dibish

0

проблема (ContactStatus == 2 || 3 || 4)

правильный путь должен (ContactStatus == 2 || ContactStatus == 3 || ContactStatus == 4)

+0

это потому, что 3 считается логическим истинным, потому что не 0 , и ваши выражения будут оцениваться как (ContactStatus == 2 || true || true) – Emanuele

+1

о да? 3? действительно? Я думал, что это was0 или 1 для bool – meda

+0

@meda: Любое число, но '0' оценивается как' true'. '0' оценивается как' false'. –

0

(ContactStatus == 2 || 3 || 4))

Это ваша проблема. Вы говорите, что если ContactStatus равно 2, это правда, ИЛИ верно или верно.

Ложные = 0, True ничего, не 0.

Вам нужно переписать, что, как:

(ContactStatus == 2 || ContactStatus == 3 || ContactStatus == 4))

Он должен работать, если вы меняете, что одна вещь

0

Будет ли это работать ? Я изменил условие if из (ContactStatus == 2 || 3 || 4) в ((ContactStatus == 2) || (ContactStatus == 3) || (ContactStatus == 4)).

(ContactStatus == 2 || 3 || 4) оценивает (ContactStatus == 2); так как это правда, он оценивает 3 как условие. Поскольку 3 отличен от 0 (ноль), то результаты являются истинными; и весь OR оценивает значение true. Конечным результатом является то, что все условие if истинно, и выбрана ветвь «then».

var IsCompanyContacttitleUpdate = false; 
var ContactStatus = 6; 

if ((IsCompanyContacttitleUpdate == false) && ((ContactStatus == 2) || (ContactStatus == 3) || (ContactStatus == 4))) 
{ 
    alert('inside if') 
} else if (IsCompanyContacttitleUpdate == false && ContactStatus == 2) { 
    alert('inside else if') 
} else { 
    alert('yup yup else'); 

} 
+1

Всегда лучше описывать свое решение, а не заставлять людей искать блок кода, который ищет изменения, которые вы сделали – freefaller

+0

Freefaller, вы правы. Я отредактировал свой ответ. – user2399923

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