在JavaScript中使用哪个等号(== vs ===)进行比较操作好?在Webstorm写项目的时候,使用==总是有警告,将==替换成===是否有性能上的好处?JS的等号比较操作是否有性能上的差异?如果没有类型转换,用===好还是用==好?
全等号===操作符与等号==操作符完全相同,全等号===操作符只是没有进行类型转换,而且必须是类型相同的才能认为是相等,而等号==操作符仅仅比较值是否相等。
在进行必要的类型转换之后,==操作符比较值是否相等,操作符===不会执行类型转换,因此如果两个值的类型不同,那么===会返回false,在性能上,两种同样快,下面是一些例子:
'' == '0'// false
0 == ''// true
0 == '0'// truefalse == 'false'// false
false == '0'// truefalse == 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// falsec == d// false
c === d// falsee == f// true
e === f// true
但是下面对于字符串的比较是特殊情况:
"str" == new String("str")// true
"str" === new String("str")// false
【在JavaScript中使用哪个等号(== vs ===)进行比较操作好()】在这里,==操作符检查两个对象的值并返回true,但是===比较发现他们的类型不同返回false,这是不是很怪异?建议不要使用String构造函数来创建String对象。
推荐阅读
- JavaScript中如何有效地深拷贝一个对象()
- var functionName=function(){}和functionName=function(){}有什么区别()
- JavaScript正则表达式高级语法原理分析和应用实例
- 不理解JS的模块化,JavaScript的模块化是如何演变或发展来的(如何实现?)
- JavaScript有异常和错误处理吗(如何进行异常处理?可以自定义吗?)
- JavaScript中函数调用分别都有哪些方式(对应的使用场景是什么?)
- AngularJS | angular.isString()函数用法介绍
- Python中的numpy.square()用法详细介绍
- 算法设计(过马路所需的最低初始能量)