在JavaScript中使用哪个等号(== vs ===)进行比较操作好?在Webstorm写项目的时候,使用==总是有警告,将==替换成===是否有性能上的好处?JS的等号比较操作是否有性能上的差异?如果没有类型转换,用===好还是用==好?
全等号===操作符与等号==操作符完全相同,全等号===操作符只是没有进行类型转换,而且必须是类型相同的才能认为是相等,而等号==操作符仅仅比较值是否相等。
在进行必要的类型转换之后,==操作符比较值是否相等,操作符===不会执行类型转换,因此如果两个值的类型不同,那么===会返回false,在性能上,两种同样快,下面是一些例子:
'' == '0' // false
0 == '' // true
0 == '0' // true
false == 'false' // false
false == '0' // true
false == undefined // false
false == null // false
null == undefined // true
' \t\r\n ' == 0 // true
另外,对于引用类型的比较,全等===操作符和等号==操作符保持一致 ,例如两个空数组并不相等,例如下面的例子:
var a = [1,2,3];
var b = [1,2,3];
var c = { x: 1, y: 2 };
var d = { x: 1, y: 2 };
var e = "text";
var f = "te" + "xt";
a == b // false
a === b // false
c == d // false
c === d // false
e == f // true
e === f // true
但是下面对于字符串的比较是特殊情况:
"str" == new String("str") // true
"str" === new String("str") // false
在这里,==操作符检查两个对象的值并返回true,但是===比较发现他们的类型不同返回false,这是不是很怪异?建议不要使用String构造函数来创建String对象。
评论前必须登录!
注册