我需要迭代思想对象而我会失去理智。
var obj = { a:"here", b: ["here"]};
for(var o in obj){
alert(obj[o]=="here");
}

答案 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"