使用(==)运算符将字符串文本与字符串对象进行比较时,返回true
var o = new String("ss");
var s = "ss";//return "ss" (string)
console.log(o);//return object
console.log(o==s);//return true
我怎么能理解?
答案 0 :(得分:2)
这是因为==
仅比较o
和s
的值。 ===
会比较值和类型。
一个小例子:
console.log(1337 == "1337"); // true
console.log(1337 === "1337"); // false
console.log(1 == true); // true;
console.log(1 === true); // false
console.log("string" == new String("string")); // true
console.log("string" === new String("string")); // false
console.log(undefined == null); // true
console.log(undefined === null); // false
答案 1 :(得分:0)
==运算符将在执行任何必要的类型转换后比较相等性。 ===运算符不会进行转换,因此如果两个值不是同一类型===将只返回false。两者都同样快。
JavaScript有两组相等运算符:===和!==,它们的邪恶双胞胎==和!=。优秀的工作方式与您期望的方式相同。如果两个操作数具有相同的类型且具有相同的值,则===生成true,并且!==生成false。当操作数属于同一类型时,邪恶的双胞胎做正确的事,但如果它们属于不同的类型,它们会试图强迫价值观。他们这样做的规则是复杂和不可取的。这些是一些有趣的案例:
例如:
'' == '0' // false
0 == '' // true
0 == '0' // true
false == 'false' // false
false == '0' // true
false == undefined // false
false == null // false
null == undefined // true
' \t\r\n ' == 0 // true
您可以在此链接中看到详细信息:link