Javascript 严格平等比较

Javascript 严格平等比较,javascript,equality,Javascript,Equality,我有联系方式。我使用js进行表单字段验证: if(email.length == 0 || email.indexOf('@') == '-1'){ var error = true; } 但是我想使用严格的相等比较来获得更好的性能。所以我试着 if(email.length === 0 || email.indexOf('@') === '-1'){ var error = true; } 但是它不起作用。对于严格相等,值应该相等,类型应该相同。根据您的代码

我有联系方式。我使用js进行表单字段验证:

if(email.length == 0 || email.indexOf('@') == '-1'){
    var error = true;
}
但是我想使用严格的相等比较来获得更好的性能。所以我试着

if(email.length === 0 || email.indexOf('@') === '-1'){
        var error = true;
    }

但是它不起作用。

对于严格相等,值应该相等,类型应该相同。根据您的代码,
'-1'
的类型为
string
,但
indexOf
返回一个
数字。===运算符不进行转换,因此即使值相等但类型不同,===也将返回false

您可以尝试使用
typeof
运算符查找类型

因此,如果您尝试
typeof'-1'
,它将返回“string”
typeof'email.indexOf('@')
将返回“number”

因此,正确的方法是删除数字-1周围的引号,如下所示

if(email.length === 0 || email.indexOf('@') === -1){
            var error = true;
        }

严格相等比较两个相等值。这两种价值都不重要 在比较之前隐式转换为其他值。如果 值有不同的类型,这些值被认为是不相等的。 否则,如果值的类型相同且不是数字, 如果它们具有相同的值,则认为它们相等。最后,如果两者都有 值是数字,如果它们都不是NaN,则视为相等 和是相同的值,或者一个是+0,一个是-0


对于严格相等,值应相等,类型应相同。根据您的代码,
'-1'
的类型为
string
,但
indexOf
返回一个
数字。===运算符不进行转换,因此即使值相等但类型不同,===也将返回false

您可以尝试使用
typeof
运算符查找类型

因此,如果您尝试
typeof'-1'
,它将返回“string”
typeof'email.indexOf('@')
将返回“number”

因此,正确的方法是删除数字-1周围的引号,如下所示

if(email.length === 0 || email.indexOf('@') === -1){
            var error = true;
        }

严格相等比较两个相等值。这两种价值都不重要 在比较之前隐式转换为其他值。如果 值有不同的类型,这些值被认为是不相等的。 否则,如果值的类型相同且不是数字, 如果它们具有相同的值,则认为它们相等。最后,如果两者都有 值是数字,如果它们都不是NaN,则视为相等 和是相同的值,或者一个是+0,一个是-0

比较运算符不会转换类型。这就是它与常规等式的区别。将返回一个数字,该数字(显然)与字符串
-1
不同。理论上,您可以将一个转换为另一个,但最好的方法是将数字包括在内,如下所示:

if (email.length == 0 || email.indexOf('@') == -1) {
  ... Your Code Here...
}
比较运算符不会转换类型。这就是它与常规等式的区别。将返回一个数字,该数字(显然)与字符串
-1
不同。理论上,您可以将一个转换为另一个,但最好的方法是将数字包括在内,如下所示:

if (email.length == 0 || email.indexOf('@') == -1) {
  ... Your Code Here...
}