关于javascript:if语句带(a == b&& c == d || e)||

If statement with (a == b && c == d || e) || a != b)

我试图在下拉列表中获取一个值,以不显示是否选择了其他值。基本上说,如果显示内部,不要显示记录类型"WF"或"记录类型"虚拟现实。但是,当为vr添加or语句时,它只会中断,它们都会出现。

1
2
3
4
5
6
7
if((zoneLocation == 'internal' && optionObj[option].value != 'record_type_wf' || 'vanity_type_vr') || zoneLocation != 'internal'){
    g_form.addOption('dns_record_type', optionObj[option].value, optionObj[option].text, optionObj[option].order);

    if (optionObj[option].value == currentRecordType){
        keepCurrentOption = true;
    }
}


这并不意味着你认为它意味着什么:

1
(zoneLocation == 'internal' && optionObj[option].value != 'record_type_wf' || 'vanity_type_vr')

注意,'vanity_type_vr'是一个真实的值,因此这个测试总是成功的,因为它的解释如下:

1
(zoneLocation == 'internal') && (optionObj[option].value != 'record_type_wf') || ('vanity_type_vr')

由于最后一个操作数,整个表达式(转换为布尔值)简化为true

这就是你的意思:

1
(zoneLocation == 'internal' && optionObj[option].value != 'record_type_wf' && optionObj[option].value != 'vanity_type_vr')