![](/img/trans.png)
[英]Why the result of bool(true) && string is string in javascript?
[英]Why "string" == ["string"] is true in JavaScript?
我需要迭代思想对象,我对此失去了理智。
var obj = { a:"here", b: ["here"]}; for(var o in obj){ alert(obj[o]=="here"); }
== 运算符将在进行任何必要的类型转换后比较是否相等。 === 运算符不会进行转换,因此如果两个值的类型不同,则 === 将简单地返回 false。 在这种情况下,=== 会更快,并且可能返回与 == 不同的结果。 在所有其他情况下,性能将相同。
它应该使用 === 而不是 ==:
var obj = { a:"here", b: ["here"]};
for(var o in obj){
alert(obj[o]==="here");
}
那是因为您正在使用==
运算符将字符串与数组进行比较。 JavaScript 解释器通过调用Array.prototype.toString
方法将数组转换为字符串。 该方法在幕后调用Array.prototype.join
方法。
["here"].toString() // => "here"
["here", "foo"].toString() // => "here,foo"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.