首页 > 代码库 > js String坑爹的==
js String坑爹的==
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坑爹的==
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。