码迷,mamicode.com
首页 > Web开发 > 详细

js String坑爹的==

时间:2014-11-09 15:14:40      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   ar   使用   java   sp   div   log   

js的String类型与java的String类型不同,比较的时候不用equals,可以直接用"==".

测试了下,这个"=="好像比较坑爹

 

<script type="text/javascript">
    var a=new String("hehe");
    var b=new String("hehe");
    var c="hehe";
    alert("a==c: "+(a==c));//true
    alert("b==c: "+(b==c));//true
    alert("a==b: "+(a==b));//false
    alert("hehe"=="hehe");//true

</script>

怎么能有这么没道理的事情?a=c,b=c,但是a竟然不等于b!!!

我的结论是js中的String类型虽然没有equals方法,但是当String类型对象与另一个String类型的变量相比较的时候,使用的方法与java的equals方法相类似。而当两个String类型相比较的时候,"=="才与java中的"=="相类似,即比较两个对象是否是同一个对象。

与之相对应的java代码,则没有这种让人纠结的地方

String a=new String("hehe");
        String b=new String("hehe");
        String c="hehe";
        String d="hehe";
        System.out.println("a==b: "+(a==b));//false
        System.out.println("a==c: "+(a==c));//false
        System.out.println("c==b: "+(c==b));//false
        System.out.println("c==d: "+(c==d));//true
        System.out.println("a.equals(b): "+(a.equals(b)));//true

java中通过new创建的String对象用"=="相比较的时候,比较的是对象的地址值,而js中,只有当两个对象都是用new创建的时候,才比较地址值。

js String坑爹的==

标签:style   blog   color   ar   使用   java   sp   div   log   

原文地址:http://www.cnblogs.com/twobrothers/p/4085095.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!