if(a.value === undefined || a.value.length>37 ||
b.value === undefined || b.value.length > 256) {
如果第一个未定义或大于37的长度。我得到一个错误,但它根本不检查第二个字段。
答案 0 :(得分:1)
使用括号。它从左到右进行检查,一旦遇到故障就停止,就像你设置它一样。 试试
if((a.value === undefined || a.value.length>37) ||
(b.value === undefined || b.value.length > 256)) {
答案 1 :(得分:1)
条件评估是懒惰的,即一旦确定结果就会停止。也就是说,如果if (A && B)
为false,B
将不评估A
,因为连接必须已经为假,同样if (A || B)
将如果B
为真,则不评估A
,因为分离已经为真。
答案 2 :(得分:0)
你忘记了逻辑中的OR意味着什么。它只会检查,直到找到一个真实的陈述。
尝试重新组合:
((a.value === undefined || a.value.length>37)
||
(b.value === undefined || b.value.length > 256))
只是提升一点条件,并带来更广泛的结果,而不是追逐第一个真正的反应。