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; //trueparseInt和 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,設計得很差 解析器
,接受八進制和十六進制輸入。一元加只需要十六進制。
Numbernullfalse""
添加回答
舉報
