2014-10-29 57 views
3

我不知道什麼是更好的使用:什麼是更好的使用:「2」.toString()=== 2.toString()或「2」== 2?

var s = "2"; 
var i = 2; 
if(s.toString() === i.toString()){ 
    //do something 
} 
//OR 

if(s == i){ 
    //do something 
} 

感謝您的幫助

+1

我會用第一種方法,因爲它確實是我們想要的。 – 2014-10-29 07:24:07

+0

你的目標是什麼? – 2014-10-29 07:24:15

+0

我同意@Mr_Green,第一種方法更清晰,JavaScript也有一些奇怪的強制規則。 – simonzack 2014-10-29 07:24:32

回答

4

你實際上是比較兩個不同的東西,第一,你是鑄造這兩個變量值的字符串和比較,而另一個比較失敗,即你實際上沒有檢查這些變量的數據類型。所以如果您將stringint的值相比較,它將返回true。

根據我的說法,你應該使用的是===,它不僅會比較數值,還會比較它們的數據類型,因爲你使用的數據都被視爲丟失。

如果您根本不考慮數據類型,那麼使用==就足夠了。您不必將值轉換爲string

1

在你的第一個例子,如果您有任何理由獲得2的空間,它會評估假(甚至==):

var s = " 2"; // 2 with a sneaky space 
var i = 2; 
if(s.toString() === i.toString()){ // will be false 
    //do something 
} 

個人而言,我更喜歡使用===,但我會改變值爲整數,而不是字符串。

var s = " 2"; // 2 with a sneaky space again 
var i = 2; 
if(Number(s) === Number(i)){ // will be true 
    //do something 
} 

你不需要第二個Number(),但是我不知道,你可能會得到也是字符串的數據。