3 回答

TA貢獻1802條經驗 獲得超5個贊
請看 這個答案 更完整的案例
空字符串 ""
計算結果為 0
,同時 parseInt
評估為 NaN
..imo,空字符串應該是 NaN
.+'' === 0; //trueisNaN(parseInt('',10)); //true
一元 +
表現得更像 parseFloat
因為它也接受小數。 parseInt
另一方面,當它看到一個非數字字符時,它將停止解析,就像擬為小數點的句點一樣。 .
.+'2.3' === 2.3; //trueparseInt('2.3',10) === 2; //true
parseInt
和 parseFloat
解析并構建字符串。 從左到右..如果他們看到一個無效字符,它將已解析的內容(如果有的話)返回為一個數字,以及 NaN
如果沒有被解析為一個數字。 一元 +
另一方面又會回來 NaN
如果整個字符串不可轉換為一個數字。 parseInt('2a',10) === 2; //trueparseFloat('2a') === 2; //trueisNan(+'2a'); //true
從…的評論中可以看出 @Alex K. ,parseInt
和 parseFloat
將按字符解析。這意味著十六進制和指數符號將失敗,因為 x
和 e
被視為非數字部件(至少在基礎10上)。 一元 +
會正確地轉化他們。 parseInt('2e3',10) === 2; //true. This is supposed to be 2000+'2e3' === 2000; //true. This one's correct.parseInt("0xf", 10) === 0; //true. This is supposed to be 15+'0xf' === 15; //true. This one's correct.

TA貢獻2039條經驗 獲得超8個贊
一元加并不是對所有虛假的價值觀一視同仁,但它們都是假的。 一元加發送 true
對1,但是 "true"
到 NaN
.另一方面, parseInt
對于非純數字的字符串,則更自由。 parseInt('123abc') === 123
,鑒于 +
報告 NaN
.Number
將接受有效的十進制數,而 parseInt
只要把所有的東西都降到十進制以上。因此 parseInt
模擬C行為,但對于評估用戶輸入可能并不理想。 兩者都在字符串中修剪空格。 parseInt
,設計得很差 解析器
,接受八進制和十六進制輸入。一元加只需要十六進制。
Number
null
false
""
添加回答
舉報