Javascript 严格平等比较
我有联系方式。我使用js进行表单字段验证: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; } 但是它不起作用。对于严格相等,值应该相等,类型应该相同。根据您的代码
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...
}