为什么"字符串" == ["字符串"]在JavaScript中是真的吗?

时间:2015-10-10 02:39:19

标签: javascript

我需要迭代思想对象而我会失去理智。



var obj = { a:"here", b: ["here"]};
for(var o in obj){
  alert(obj[o]=="here");
  }




2 个答案:

答案 0 :(得分:2)

==运算符将在执行任何必要的类型转换后比较相等性。 ===运算符不会进行转换,因此如果两个值不是同一类型===将只返回false。在这种情况下,===会更快,并且可能会返回与==不同的结果。在所有其他情况下,表现将是相同的。

它应该使用===而不是==:

var obj = { a:"here", b: ["here"]};
for(var o in obj){
  alert(obj[o]==="here");
  }

答案 1 :(得分:2)

那是因为您使用==运算符将字符串与数组进行比较。 JavaScript解释器通过调用Array.prototype.toString方法将数组转换为字符串。该方法在后台调用Array.prototype.join方法。

["here"].toString() // => "here"
["here", "foo"].toString() // => "here,foo"