这个问题在这里已经有一个答案:

有什么区别 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
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top