之間使用(==)運算符的文本字符串比較字符串對象中的JavaScript比較,返回true字符串文字和字符串()對象
var o = new String("ss");
var s = "ss";//return "ss" (string)
console.log(o);//return object
console.log(o==s);//return true
我怎麼能明白嗎?
之間使用(==)運算符的文本字符串比較字符串對象中的JavaScript比較,返回true字符串文字和字符串()對象
var o = new String("ss");
var s = "ss";//return "ss" (string)
console.log(o);//return object
console.log(o==s);//return true
我怎麼能明白嗎?
這是因爲==
只是比較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
的==操作符會做任何必要的類型轉換後相等比較。 ===運算符不會執行轉換,所以如果兩個值不是相同的類型===將簡單地返回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
的==操作符會做任何必要的類型轉換後的比較平等。 ===運算符不會執行轉換,所以如果兩個值不是相同的類型===將簡單地返回false。兩者同樣快速。 – Dayan
什麼是「文本」對象? – Bergi