Number

2018-02-10大约11分钟

JavaScript 的 Number 对象是对值类型数字进行包装的对象,这样数值类型也有一个对应的对象。

创建对象

在 JavaScript 中,数字是一种基本的数据类型。JavaScript 还支持 Number 对象,该对象是原生数值的包装对象。在必要时,JavaScript 会自动地在原始数据和对象之间转换。

可以用构造函数 Number() 明确地创建一个 Number 对象。

const num = new Number(5);
console.log(`num的值:${num}`);

const numFromString = new Number("5");
console.log(`numFromString的值:${numFromString}`);

构造函数 Number() 可以不与运算符 new 一起使用,而直接作为转化函数来使用。以这种方式调用 Number() 时,它会把自己的参数转化成一个数字,然后返回转换后的原始数值(或 NaN)。

const numFromString = Number("5");
console.log(`numFromString的值:${numFromString}`);

const nanNumber = Number("aaa");
console.log(`nanNumber的值:${nanNumber}`);

比较对象

比较对象是否是同样一个对象,可以用==运算符:

const num1 = new Number(5);
const num2 = new Number(5);

// num1和num2是两个不同的对象
console.log(`num1和num2相等:${num1 == num2}`);

当比较数值和对象是否相等的时候,对象会自动转换成值类型做比较:

console.log(new Number(5) == 5); // true
console.log(new Number(5) == 6); // false

需要注意的是,如果想避免比较的时候做类型转换,就应该用恒等运算符===来比较:

console.log(new Number(5) === 5); // false

更多属性和方法

Number有更多的属性

属性 解释
Number.EPSILON 大于1的最小浮点数和1的差,或者两个能表示的最小数之间的距离
Number.MAX_SAFE_INTEGER JavaScript中最大的安全整数 (2^53 - 1)
Number.MAX_VALUE JavaScript中最大的能表示的正数
Number.MIN_SAFE_INTEGER JavaScript中最小的安全整数 -(2^53 - 1)
Number.MIN_VALUE JavaScript中最小能表示的正数,接近0,但不是0
Number.NaN 特殊的‘Not a Number’值
Number.NEGATIVE_INFINITY 特殊的负无穷值,超出表示范围的时候返回此值
Number.POSITIVE_INFINITY 特殊的正无穷值,超出表示范围的时候返回此值
Number.prototype 允许在Number对象上添加额外的属性

更多的方法:

方法 解释
Number.isNaN() 确定传递的值是否是 NaN
Number.isFinite() 确定传递的值类型及本身是否是有限数
Number.isInteger() 确定传递的值类型是“number”,且是整数
Number.isSafeInteger() 确定传递的值是否为安全整数 ( -(2^53 - 1) 至 2^53 - 1之间)
Number.parseFloat() 和全局对象 parseFloat() 一样
Number.parseInt() 和全局对象 parseInt() 一样