javascript中toInt的几种方法

1514次阅读  |  发布于5年以前

在javascript中,如果要将一个字符串转变成数字,一般是通过parseInt这个函数进行。但如果对输入串有很高确定性的话,其实可以用更简单的方法。如:只是将字符串"123"变成数字123。下面给出具体的说明。

parseInt函数

parseInt函数是专门用来处理将字符串变成整型的。具体请见:ECMA-262 P114。

  1. 支持八进制和十六进制,如:'0111','0x111'。
  2. 支持非正数。如:'-111'。
  3. 支持数字后还有字符串,如:'111abc'。
  4. 支持第二个参数,是传递的转换进制,数值为2到36。如:parseInt('111',2),即将111转换为二进制。
  5. 忽略前面的空白字符,如:\n,\t,\r。
  6. 如果无法将字符串转换为一个数值,则返回NaN。

一元操作符"+"

在javascript中,"+"号即可以作为二元操作符,又可以作为一元操作符。作为一元操作符的时候,就是将对象变成数值形式的。具体见:ECMA-262 P82。

其实执行+的时候,调用JS引擎的ToNumber函数。

  1. true/false转成1/0。
  2. null转成0。
  3. 支持非正数。
  4. 忽略前面的空白字符。
  5. 支持16进制,八进制会当十进制处理。
  6. "111"转换成111,其他情况基本都是 NaN。

Number构造器

当number构造器当函数使用时,是将其他对象转化成数值。转换原理跟一元操作符"+"完全一样,因为都是调用JS引擎ToNumber函数。所以这个方式基本不用,因为使用它比使用"+"要多7个字符。

二进制操作符"|"

使用二进制操作符"|"结合0可以将对象转换成整形的。如'111'|0。

  1. true/false转换成1/0。
  2. 忽略前面的特殊字符。
  3. 支持16进制,八进制会当十进制处理。
  4. null转成0。
  5. 支持非正数。
  6. 不能转换成整型的,则返回为0。如:'111abc'结果为0。

二进制操作符">>"

使用二进制操作符">>"结合0可以将对象转换成整形的。如'111'>>0。

  1. true/false转换成1/0。
  2. 忽略前面的特殊字符。
  3. 支持16进制,八进制会当十进制处理。
  4. null转成0。
  5. 支持非正数。
  6. 不能转换成整型的,则返回为0。如:'111abc'结果为0。

二进制操作符">>>"

使用二进制操作符">>>"结合0可以将对象转换成整形的。如'111'>>>0。

  1. true/false转换成1/0。
  2. 忽略前面的特殊字符。
  3. 支持16进制,八进制会当十进制处理。
  4. null转成0。
  5. 非正数的时候则转换为2^32-概数的绝对值。如:'-111'>>>0为4294967185。
  6. 不能转换成整型的,则返回为0。如:'111abc'结果为0。

测试结果

对于转换的对象数字加字符或者其他类型的,只能用parseInt转换。

对于一般的转化,如将"123"转化成123时,有如下的测试结果:

parseInt

|

Copyright© 2013-2020

All Rights Reserved 京ICP备2023019179号-8