Javascript 带有(a==b&&c==d | e)| a!=(b)

Javascript 带有(a==b&&c==d | e)| a!=(b),javascript,if-statement,Javascript,If Statement,我试图在下拉列表中获取一个值,以不显示是否选择了另一个值。 基本上说,如果显示Internal,则不显示Record\u type\u wf或Record\u type\u vr 但是,当在VR的or语句中添加时,它只是中断,它们总是出现 if((zoneLocation == 'internal' && optionObj[option].value != 'record_type_wf' || 'vanity_type_vr') || zoneLocation != 'int

我试图在下拉列表中获取一个值,以不显示是否选择了另一个值。 基本上说,如果显示Internal,则不显示Record\u type\u wf或Record\u type\u vr 但是,当在VR的or语句中添加时,它只是中断,它们总是出现

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

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

(zoneLocation == 'internal' && optionObj[option].value != 'record_type_wf' || 'vanity_type_vr')
请注意,“vanity_type_vr”是一个真实值,因此此测试总是成功的,因为它的解释如下:

(zoneLocation == 'internal') && (optionObj[option].value != 'record_type_wf') || ('vanity_type_vr')
由于最后一个操作数,转换为布尔值的整个表达式简化为true

这就是你的意思:

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

对于那些投票以打字错误结束的人来说:这不是一个打字错误,这是对JavaScript的逻辑运算符所做的工作的误解。可能的重复也是相关的