var str1= new string("hello");
var str2 = new string("hello");
str1 == "hello" ; // true
str2 == "hello";// true 
str1 != str2 // true ?????? why?

解决方案 »

  1.   

    str1、str2保存的都是指向字符串对象的引用地址,当然不等。
    str1.toString() != str2.toString(); //这样就false了另外,创建字符串对象应该是 new String(),大小写敏感的。
      

  2.   

    var str1= new String("hello");这是声明创建一个对象
    alert(typeof(str1)) 看看,结果就是 "object"
    也就是说 str1放的是一个指针,指像一个对象
    str1和 str2指向的对象完全不一样所以str1自然就不等于str2了
      

  3.   

    http://www.ibm.com/developerworks/cn/web/wa-lo-dojoajax1/ 
    LZ看完就明白了
      

  4.   

    两个不同的引用当然不相等.前面那两个相等只是因为值类型和引用类型比较的时候,引用类型会转换为值,然后同去比较,这时相等,所以为true.