我不知道什麼是更好的使用:什麼是更好的使用:「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
}
感謝您的幫助
我不知道什麼是更好的使用:什麼是更好的使用:「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
}
感謝您的幫助
你實際上是比較兩個不同的東西,第一,你是鑄造這兩個變量值的字符串和比較,而另一個比較失敗,即你實際上沒有檢查這些變量的數據類型。所以如果您將string
與int
的值相比較,它將返回true。
根據我的說法,你應該使用的是===
,它不僅會比較數值,還會比較它們的數據類型,因爲你使用的數據都被視爲丟失。
如果您根本不考慮數據類型,那麼使用==
就足夠了。您不必將值轉換爲string
。
在你的第一個例子,如果您有任何理由獲得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(),但是我不知道,你可能會得到也是字符串的數據。
我會用第一種方法,因爲它確實是我們想要的。 – 2014-10-29 07:24:07
你的目標是什麼? – 2014-10-29 07:24:15
我同意@Mr_Green,第一種方法更清晰,JavaScript也有一些奇怪的強制規則。 – simonzack 2014-10-29 07:24:32