JavaScript中的parseInt(string)和Number(string)有什么区别?
JavaScript中的parseInt(string)
和Number(string)
什么区别?
parseInt("123hui")
返回123
Number("123hui")
返回NaN
换句话说, parseInt()
parsing到第一个非数字,并返回分析的内容。 Number()
希望将整个string转换为一个数字,也可以是一个浮动BTW。
编辑#1:Lucero评论可以与parseInt()
一起使用的基数。 就这一点而言,请参阅下面的医生的答案 (我不打算在这里复制,文档应该有一个公平的份额…)。
编辑#2:关于用例:这已经写在线之间了。 如果您间接要检查给定的string是否完全代表数值,float或integer,则使用Number()
。 parseInt()/parseFloat()
并不严格,因为它们只是parsing并停止数值停止(radix!),这使得它有用,当你需要在前面的数字值“万一有”(注意parseInt("hui")
也返回NaN
)。 最大的区别是Number()
不知道的基数和parseInt()
可能从给定的string间接猜测(这可能会导致奇怪的结果有时)。
第一个参数有两个参数:
parseInt(string, radix)
radix参数用于指定要使用的数字系统,例如16(hex)的基数表示string中的数字应该从hex数字parsing为十进制数字。
如果省略了radix参数,那么JavaScript假定如下:
- 如果string以“0x”开始,那么
基数是16(hex) - 如果string以“0”开始,则基数为8(八进制)。 这个function
已弃用 - 如果string以任何其他值开始,则基数为10(十进制)
你提到的另一个函数只有一个参数:
Number(object)
Number()函数将对象参数转换为表示对象值的数字。
如果该值无法转换为合法的号码,则返回NaN。
只要string以数字字符开头, parseInt(string)就会将包含非数字字符的string转换为数字
'10px' => 10
如果string包含任何非数字字符,则Number(string)将返回NaN
'10px' => NaN
parseInt
函数允许您为inputstring指定各种半径,并将其限制为整数值。
parseInt('Z', 36) === 35
作为函数调用的Number
构造函数将使用语法parsingstring,并将其限制在基数10和基数16之间。
StringNumericLiteral ::: StrWhiteSpace select StrWhiteSpace 可选 StrNumericLiteral StrWhiteSpace 可选 StrWhiteSpace ::: StrWhiteSpaceChar StrWhiteSpace select StrWhiteSpaceChar ::: 空白符 LineTerminator StrNumericLiteral ::: StrDecimalLiteral HexIntegerLiteral StrDecimalLiteral ::: StrUnsignedDecimalLiteral + StrUnsignedDecimalLiteral - StrUnsignedDecimalLiteral StrUnsignedDecimalLiteral ::: 无穷 十进制数字。 DecimalDigits select ExponentPart选项 。 DecimalDigits ExponentPart select DecimalDigits ExponentPart select DecimalDigits ::: DecimalDigit 十进制数字十进制数字 DecimalDigit ::: 其中之一 0 1 2 3 4 5 6 7 8 9 ExponentPart ::: ExponentIndicator SignedInteger ExponentIndicator ::: 其中之一 e SignedInteger ::: DecimalDigits +十进制数字 -十进制数字 HexIntegerLiteral ::: 0x HexDigit 0X HexDigit HexIntegerLiteral HexDigit HexDigit ::: 其中之一 0 1 2 3 4 5 6 7 8 9 abcdef ABCDEF
附录@ sjngm的答案:
他们都忽略空白:
var foo =“3”; 的console.log(parseInt函数(FOO)); // 3 console.log(Number(foo)); // 3
这不完全正确。 正如sjngm写parseIntparsingstring到第一个数字。 这是真的。 但问题是,当你想parsing数字分隔与空白即。 “12 345”。 在这种情况下
parseInt("12 345")
将返回12
而不是12345
。 所以为了避免这种情况,你必须在parsing数字之前修剪空格 。 我的解决scheme是:
var number=parseInt("12 345".replace(/\s+/g, ''),10);
注意一个额外的东西,我在parseInt()函数中使用。 parseInt("string",10)
将数字设置为十进制格式 。 如果你要parsing像“08”的string,你会得到0,因为8不是一个八进制数。说明在这里
附录@ sjngm的答案:
他们都忽略空白:
var foo = " 3 "; console.log(parseInt(foo)); // 3 console.log(Number(foo)); // 3