3 回答

TA貢獻1802條經(jīng)驗 獲得超5個贊
請看 這個答案 更完整的案例
空字符串 ""
計算結(jié)果為 0
,同時 parseInt
評估為 NaN
..imo,空字符串應該是 NaN
.+'' === 0; //trueisNaN(parseInt('',10)); //true
一元 +
表現(xiàn)得更像 parseFloat
因為它也接受小數(shù)。 parseInt
另一方面,當它看到一個非數(shù)字字符時,它將停止解析,就像擬為小數(shù)點的句點一樣。 .
.+'2.3' === 2.3; //trueparseInt('2.3',10) === 2; //true
parseInt
和 parseFloat
解析并構(gòu)建字符串。 從左到右..如果他們看到一個無效字符,它將已解析的內(nèi)容(如果有的話)返回為一個數(shù)字,以及 NaN
如果沒有被解析為一個數(shù)字。 一元 +
另一方面又會回來 NaN
如果整個字符串不可轉(zhuǎn)換為一個數(shù)字。 parseInt('2a',10) === 2; //trueparseFloat('2a') === 2; //trueisNan(+'2a'); //true
從…的評論中可以看出 @Alex K. ,parseInt
和 parseFloat
將按字符解析。這意味著十六進制和指數(shù)符號將失敗,因為 x
和 e
被視為非數(shù)字部件(至少在基礎(chǔ)10上)。 一元 +
會正確地轉(zhuǎn)化他們。 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條經(jīng)驗 獲得超8個贊
一元加并不是對所有虛假的價值觀一視同仁,但它們都是假的。 一元加發(fā)送 true
對1,但是 "true"
到 NaN
.另一方面, parseInt
對于非純數(shù)字的字符串,則更自由。 parseInt('123abc') === 123
,鑒于 +
報告 NaN
.Number
將接受有效的十進制數(shù),而 parseInt
只要把所有的東西都降到十進制以上。因此 parseInt
模擬C行為,但對于評估用戶輸入可能并不理想。 兩者都在字符串中修剪空格。 parseInt
,設(shè)計得很差 解析器
,接受八進制和十六進制輸入。一元加只需要十六進制。
Number
null
false
""
添加回答
舉報