或jquery中的关键字

时间:2014-01-21 19:58:08

标签: javascript jquery

我在这里缺少什么? zipcode有一个有效的长度,但if代码有一个红色的波浪形。这总是我用双管道在jquery中使用Or的方式。如果我将这两个条件括在括号中,那么我会得到一个蓝色的波浪形,说条件总是正确的,这怎么可能?这段代码语法有什么问题?

//testing here if its usa, if so run code below 
alert(zipcode.length);          
if (zipcode.length = 5 || zipcode.length = 9) {
    zip.addClass("isvalid");
    zip.css("border", "1px solid lightgray");
} else {                       
    zip.css("border", "2px solid red");
    alert("Invalid postal code entry, number is 5 or 9 digits");
    zip.focus();
}

2 个答案:

答案 0 :(得分:3)

if (zipcode.length == 5 || zipcode.length == 9)

Read here about operators

答案 1 :(得分:0)

再次查看条件:

zipcode.length = 5 || zipcode.length = 9

=是赋值运算符,逻辑运算符或运算符的优先级高于赋值运算符,因此该行的计算结果如下:

zipcode.length = (5 || zipcode.length) = 9

5 || myvar将在JavaScript中评估为5,因此您获得了

zipcode.length = 5 = 9

9 无法分配给5,因此您收到错误。

  

如果我将这两个条件括在括号中,那么我会得到一个蓝色的波浪形,说条件总是正确的,这怎么可能?

在评估时考虑该陈述:

(zipcode.length = 5) || (zipcode.length = 9)
5 || (zipcode.length = 9)
true || (zipcode.length = 9)
true

如果zipcode是字符串与数组相对于其他类型的对象,并尝试在其上设置length属性,则完全不考虑可能出现的任何问题!< / p>

所有这些归结为=(赋值)与=====(相等)不是同一个运算符的真正问题。如果您只是在每一侧添加一个额外的等号,那么您突然的邮政编码长度与5和9进行比较,而不是设置邮政编码的长度。