2014-07-19 55 views
-2

我知道'=='和'==='之間的區別 請糾正我,如果我錯了'=='運算符檢查值是否正確,即它強制嗎?和'==='檢查值並輸入兩者? 但我不明白,我怎麼得到以下結果,請看看:在JavaScript中使用對象的'=='行爲

var a= new String("one"); 
var b= new String("one"); 

a==b // I expected it to be true but it is FALSE please explain both the objects have same value then why? 

由費利克斯我提供的線索可以收集該 「==」表現不同的引用類型和原始類型即它強制如果其中一個操作數是基元,但如果兩者都是對象,則它只會比較引用。那麼我可以得出結論:如果兩個操作數都是像上面那樣的引用類型,'=='和'==='工作完全相同?

+1

因爲它們不是相同的對象引用。 –

+0

'a'和'b'引用不同的對象,因此它是錯誤的。這就是爲什麼你從不使用'new String'或'New Number'或'new Boolean'等等,因爲它們會弄亂你的代碼。 –

+0

*「那麼我可以得出結論:如果兩個操作數都是像上面那樣的引用類型,'=='和'==='的工作方式完全相同?」*是的。 –

回答

2

那是因爲你比較對象的引用,你可以有一個很大的理解通過閱讀本documentation的最後部分..

這是像你這樣的:

// fruit object reference variable 
var fruit = {name: "apple"}; 

// fruitbear object reference variable 
var fruitbear = {name: "apple"}; 

fruit == fruitbear // return false 

fruit === fruitbear // return false 

的是你應該做的是什麼得到真實:

// fruit object reference variable 
var fruit = {name: "apple"}; 

// fruitbear object reference variable 
var fruitbear = fruit; // assign fruit object reference to fruitbear object reference variable 

// here fruit and fruitbear pointing to same object called fruit 
fruit == fruitbear // return true 

// here fruit and fruitbear pointing to same object called fruit 
fruit === fruitbear // return true 
+0

抱歉不能接受作爲答案我發現上述線程中的實際答案'=='行爲不同時,其中一個操作數是原始類型和其他引用類型即引用類型的強制發生,但如果兩者都是引用類型它只檢查參考不是值。 –

+2

沒有probs,我們在這裏幫助人們.. ^^ –