-1

我已经完成了一些简单的 if else 检查

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');
}

在这种情况下,我希望执行 else 部分。但它没有被解雇。请帮我解决这个问题......提前谢谢请看小提琴 http://jsfiddle.net/vuHYn/1/

4

4 回答 4

6

ContactStatus == 2 || 3 || 4是无效的(也许无效不是正确的词,更准确地说,它没有做你认为它做的事情)

对于您的场景,您需要使用

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

您的代码可以翻译成

ContactStatus == 2 || true || true

这总是正确的。

于 2013-09-20T12:38:10.017 回答
0

问题是(ContactStatus == 2 || 3 || 4)

正确的方法应该是(ContactStatus == 2 || ContactStatus == 3 || ContactStatus == 4)

于 2013-09-20T12:39:19.377 回答
0

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

这是你的问题。您是说如果ContactStatus等于 2,则为真,或为真或为真。

False = 0,True 不是 0。

您需要将其重写为:

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

如果您更改一件事,它应该可以工作

于 2013-09-20T12:39:38.043 回答
0

这行得通吗?我将 if 条件从 (ContactStatus == 2 || 3 || 4) 更改为 ((ContactStatus == 2) || (ContactStatus == 3) || (ContactStatus == 4))。

(ContactStatus == 2 || 3 || 4) 评估 (ContactStatus == 2); 因为它是真的,它评估 3 作为一个条件。由于 3 不同于 0(零),因此结果为真;并且整个 OR 评估为真。最终结果是整个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');

}
于 2013-09-20T12:40:18.103 回答