繁体   English   中英

为什么 "string" == ["string"] 在 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM