2017-03-03 45 views
0

之間使用(==)運算符的文本字符串比較字符串對象中的JavaScript比較,返回true字符串文字和字符串()對象

var o = new String("ss"); 

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

console.log(o);//return object  

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

我怎麼能明白嗎?

+0

的==操作符會做任何必要的類型轉換後的比較平等。 ===運算符不會執行轉換,所以如果兩個值不是相同的類型===將簡單地返回false。兩者同樣快速。 – Dayan

+0

什麼是「文本」對象? – Bergi

回答

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

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