Javascript字符串Text和String()对象之间的比较

时间:2017-03-03 15:56:21

标签: javascript

使用(==)运算符将字符串文本与字符串对象进行比较时,返回true

var o = new String("ss");

var s = "ss";//return "ss" (string)

console.log(o);//return object    

console.log(o==s);//return true

我怎么能理解?

2 个答案:

答案 0 :(得分:2)

这是因为==仅比较os的值。 ===会比较值和类型。

一个小例子:

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