JavaScript中的Parseint(String)和Number(String)有什么区别? [复制
-
14-10-2019 - |
题
这个问题在这里已经有一个答案:
有什么区别 parseInt(string)
和 Number(string)
在JavaScript?
解决方案
parseInt("123hui")
返回123
Number("123hui")
返回 NaN
换句话说 parseInt()
解析到第一个非数字,并返回其解析的任何东西。 Number()
想要将整个字符串转换为一个数字,这也可以是float btw。
编辑#1:Lucero评论了可以与 parseInt()
. 。就这样而言,请参阅 医生的答案 下面(我不会在这里复制它,文档应在名望中有公平的份额...)。
编辑#2:关于用例:这已经有些写在线之间。利用 Number()
如果您间接想检查给定的字符串是否完全表示数字值,浮点或整数。 parseInt()/parseFloat()
不是那么严格,因为它们只是在数字值停止时停止并停止(radix!),这使得当您在前面需要数字值时它有用(如果有一个”(请注意 parseInt("hui")
也返回 NaN
)。最大的区别是使用radix Number()
不知道和 parseInt()
可能会间接猜测给定的字符串(有时会导致奇怪的结果)。
其他提示
第一个采用两个参数:
parseInt(string, radix)
radix参数用于指定要使用的数字系统,例如16(十六进制)表示字符串中的数字应从十六进制数字中解析为小数号。
如果省略了radix参数,则JavaScript假定以下内容:
- 如果字符串以“ 0x”开头,则
radix为16(十六进制) - 如果字符串以“ 0”开头,则radix为8(八倍)。此功能
被弃用 - 如果字符串以任何其他值开头,则radix为10(十进制)
您提到的另一个功能仅采用一个参数:
Number(object)
number()函数将对象参数转换为代表对象值的数字。
如果该值无法转换为法定号码,则退回NAN。
parseint(字符串) 只要字符串以数字字符开头,将包含非数字字符的字符串转换为一个数字
'10px' => 10
数字(字符串) 如果字符串包含任何非数字字符,将返回NAN
'10px' => NaN
这 parseInt
函数允许您为输入字符串指定radix,并且仅限于整数值。
parseInt('Z', 36) === 35
这 Number
称为函数的构造函数将用语法解析字符串,并且仅限于基础10和基础16。
StringNumericLiteral ::: StrWhiteSpace选择 StrWhiteSpace选择 StrNumericLiteral StrWhiteSpace选择 StrWhiteSpace ::: StrWhiteSpaceChar StrWhiteSpace选择 StrWhiteSpaceChar ::: WhiteSpace LineTerminator StrNumericLiteral ::: StrDecimalLiteral HexIntegerLiteral StrDecimalLiteral ::: StrUnsignedDecimalLiteral + StrUnsignedDecimalLiteral - StrUnsignedDecimalLiteral StrUnsignedDecimalLiteral ::: 无穷 DecimalDigits . DecimalDigits选择 ExponentPart选择 . DecimalDigits ExponentPart选择 DecimalDigits ExponentPart选择 DecimalDigits ::: DecimalDigit DecimalDigits DecimalDigit DecimalDigit ::: 之一 0 1 2 3 4 5 6 7 8 9 ExponentPart ::: ExponentIndicator SignedInteger ExponentIndicator ::: 之一 E e SignedInteger ::: DecimalDigits + DecimalDigits - 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 将Parseint Parses字符串写入第一个数字。是真的。但是问题是当您想用whitespace分离的数字即时IE分析时。 “ 12 345”。在这种情况下 parseInt("12 345")
将返回 12
代替 12345
。因此,为避免这种情况,您必须 在解析到数字之前修剪空格。我的解决方案是:
var number=parseInt("12 345".replace(/\s+/g, ''),10);
请注意我在ParseInt()函数中使用的一件事。 parseInt("string",10)
将设置 十进制格式的编号. 。如果您会像“ 08”那样分析字符串,则会得到0,因为 8不是八分音数字。解释是 这里
@sjngm的答案附录:
他们都忽略了空格:
var foo = " 3 ";
console.log(parseInt(foo)); // 3
console.log(Number(foo)); // 3