2011-11-25 72 views
16

有一些奇怪的東西。isNaN()vs parseInt()混淆

爲什麼
isNaN("")我得到False

parseInt("")我得到NaN

+2

可能的重複http://stackoverflow.com/questions/825402/why-does-isnan-equal-false –

+0

因爲'isNaN'不使用'parseInt'? –

+1

關鍵是要了解**類型轉換**和**解析**,後面的'isNaN'之間的區別,將它的參數類型轉換爲'Number'類型,而'parseInt'將嘗試*解析*提供的字符串。另見:http://stackoverflow.com/questions/4090518/string-to-int-use-parseint-or-number – CMS

回答

19

isNaN需要一個整數作爲參數 - 因此JS轉換""0

parseInt採用字符串作爲參數 - 因此一個空字符串不是數字

+0

已經回答 - 重複http://stackoverflow.com/questions/825402/why-does-isnan -equal-false –

+10

'isNaN'不接受一個「整數」,它*期望*一個數字(所有IEEE-754雙打,例如'isNaN(0.5)'產生'false'),這就是爲什麼它試圖*將參數值轉換爲數字 – CMS

+0

您的權利 - 但我試圖保持簡單的邏輯。 –

0

這是因爲""相當於零在JavaScript中。嘗試"" == 0。這意味着如果你嘗試用數值方程來評估它,它會變成0.當你解析它的時候,它意識到那裏什麼都沒有。

作爲parseInt的替代方法,您可以使用Math.floor。這會給你0""

+0

你是什麼意思的「是等價的」? – Kos