# Number 和 parseInt 的区别

Number()parseInt()通常用于将字符串转换为数字。

前者是转换参数的类型,后者更多在于解析字符串。

# 0、Number

Number 值表示像 37-9.25 这样的浮点数值。

当作为一个函数使用时,Number(value) 函数将类型转换成数字类型,如果参数无法被转换为数字,则返回 NaN。

Returns a Number value (not a Number object) computed by ToNumber (opens new window)(value) if value was supplied, else returns +0.

关于这个toNumber,可以直接看一个对应的表

参数类型 返回值
Undefined NaN
Null +0
Boolean The result is 1 if the argument is true. The result is +0 if the argument is false.
Number 返回与之相等的值
String 比较复杂看下面的例子。
Object Apply the following steps:Let primValue be ToPrimitive (opens new window)(input argument, hint Number).Return ToNumber(primValue).调用 对象的toPrimitive,获取原始值, 再用原始值调用toNumber
console.log(Number()) // +0

console.log(Number(undefined)) // NaN
console.log(Number(null)) // +0

console.log(Number(false)) // +0
console.log(Number(true)) // 1

console.log(Number("123")) // 123
console.log(Number("-123")) // -123
console.log(Number("1.2")) // 1.2
console.log(Number("000123")) // 123
console.log(Number("-000123")) // -123

console.log(Number("0x11")) // 17

console.log(Number("")) // 0
console.log(Number(" ")) // 0

console.log(Number("123 123")) // NaN
console.log(Number("foo")) // NaN
console.log(Number("100a")) // NaN

如果通过 Number 转换函数传入一个字符串,它会试图将其转换成一个整数或浮点数,而且会忽略所有前导的 0,如果有一个字符不是数字,结果都会返回 NaN,鉴于这种严格的判断,我们一般还会使用更加灵活的 parseInt 和 parseFloat 进行转换。

当作为构造函数使用时;

const num = new Number(14)
typeof num; // object
num === 14; // false
num == 14; // true
num.valueOf(); // 14 

# 1、parseInt

parseInt

# 2、区别

  1. Number()转换类型, 而parseInt()转换输入值。
  2. parseInt()第二个参数可以传入进制,而Number()不行
parseInt('32px'); // 32
Number('32px'); // NaN
parseInt('5e1'); // 5
Number('5e1'); // 30

parseInt 是一个个字符依次转换,如果遇到不能转为数字的字符,就不再进行下去,返回已经转好的部分。而Number尝试转换整个字符串。

# 3、特殊值转换

parseInt();         /* NaN */  Number());         // 0
parseInt('');       /* NaN */  Number(''));       // 0
parseInt(null);     /* NaN */  Number(null));     // 0
parseInt(true);     /* NaN */  Number(true));     // 1
parseInt(false)     /* NaN */  Number(false));    // 0
parseInt(undefined) /* NaN */  Number(undefined));// NaN
上次更新: 1/22/2025, 9:39:13 AM