注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

网易邮箱前端技术中心

汇聚最新最劲爆的前端技术

 
 
 

日志

 
 
 
 

[每周爆栈精选]javascript中“==”和“===”的性能对比  

2013-09-12 15:58:56|  分类: javascript |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

原文来自这里

以下是原文回答精选

条件判断中的“===”操作符,相当于“==”操作符中没有类型转换的条件对比,并且类型必须是一样的。

“==”操作符在判断是否相等之前会进行类型转换,“===”操作符则不会做任何类型转换,所以如果两个值的类型不一样,那么===会返回false,所以当这种情况下===效率会更加快,并且返回的结果可能会和==不一样,如果类型一样的话,则性能也将会一样。

引用javascript大师Douglas Crockford的《JavaScript: The Good Parts》:
javascript中有两组相等判断的操作符:===、!==,和另外一个SB组合 ==、!=。如果两边的对象是相同的类型,并且是相同的值,那么===返回true,!==返回false,SB组合也是一样会返回同样的结果,但是如果他们不是一样的类型,那么会尝试强制转换类型,然后再进行比较,至于转换规则,是异常的复杂和坑爹。

下面有些有趣的例子:

'' == '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

我的建议是不再使用SB组合,而是要使用===和!==。以上的例子,将==替换成===都将会返回false。

关于性能的对比测试
回到主题,以下这个例子,我将原来的改了一下,测试这两种组合的效率,结果一定会使你和你的小伙伴们都惊呆了。
http://jsperf.com/comparison-of-comparisons/16


哈里
  评论这张
 
阅读(692)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017