个性化阅读
专注于IT技术分析

在JavaScript中使用哪个等号(== vs ===)进行比较操作好?

在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对象。

赞(0)
未经允许不得转载:srcmini » 在JavaScript中使用哪个等号(== vs ===)进行比较操作好?

评论 抢沙发

评论前必须登录!