关键要点
- JavaScript 的 Number 对象是数字的包装对象,研究表明它提供处理数字的方法。
- 它包含属性如 MAX_VALUE、MIN_VALUE 和特殊值如 NaN、Infinity。
- 常用方法包括 toExponential()、toFixed() 等,适合格式化数字。
- 原始数字和 Number 对象可自动转换,Number() 函数用于值转数字。
什么是 Number 对象?
Number 对象是 JavaScript 中用于表示数字的包装对象。它允许你以对象形式操作数字,提供多种属性和方法来处理数值。
数字的表示
JavaScript 中的数字是浮点数,遵循 IEEE 754 标准,使用 64 位双精度浮点格式存储。例如,3 和 3.0 是相同的。
属性和方法
Number 对象有静态属性如 Number.MAX_VALUE
(最大值)和 Number.NaN
(非数字)。方法如 toFixed()
可将数字格式化为指定小数位数,例如:
let num = 12.525;
console.log(num.toFixed(2)); // "12.53"
使用示例
Number() 函数可将字符串转为数字,例如 Number("3.14")
返回 3.14。若无法转换,返回 NaN。
JavaScript Number 对象详细讲解
引言
JavaScript 的 Number 对象是数字值的包装对象,提供丰富的属性和方法来操作和处理数字。根据 Number – JavaScript | MDN,它既可以作为构造函数使用,也可以作为工具函数,用于数值相关的操作。在 JavaScript 中,数字是基本数据类型,Number 对象则是原始数值的包装对象,当需要调用数字的方法时,JavaScript 会自动将原始数字转换为 Number 对象。
数字的表示
JavaScript 中的数字是浮点数,遵循 IEEE 754 标准,使用 64 位双精度浮点格式存储。这意味着 JavaScript 中的所有数字都是浮点数,即使是整数也被存储为浮点数。例如,根据 数字类型 – JavaScript.info,3 和 3.0 在 JavaScript 中是相同的:
console.log(3 === 3.0); // true
数字可以以多种形式表示,例如:
- 整数:
255
- 浮点数:
3.14159
- 十六进制:
0xff
- 二进制:
0b11111111
- 科学计数法:
0.255e3
根据 JavaScript Number 对象 | 菜鸟教程,这些表示法在 JavaScript 中都是有效的数字字面量。
Number 对象的属性
Number 对象有一些静态属性,这些属性是 Number 构造函数本身的属性,而不是实例的属性。常见的属性包括:
Number.MAX_VALUE
:表示 JavaScript 中可以表示的最大数字,大约是1.7976931348623157e+308
。例如:
console.log(Number.MAX_VALUE); // 1.7976931348623157e+308
Number.MIN_VALUE
:表示 JavaScript 中可以表示的最小正数字,大约是5e-324
。Number.NaN
:表示非数字(Not-a-Number),通常是由于非法操作导致的。例如:
console.log(Number.NaN); // NaN
Number.NEGATIVE_INFINITY
:表示负无穷大。例如,-1 / 0
返回-Infinity
。Number.POSITIVE_INFINITY
:表示正无穷大。例如,1 / 0
返回Infinity
。
这些属性可以直接通过 Number
访问,用于检查数字的边界或特殊值。
Number 对象的方法
Number 对象的实例有一些方法,可以用来格式化数字或获取数字的字符串表示。这些方法包括:
toExponential(fractionDigits)
:将数字转换为指数表示法,fractionDigits
指定小数点后的位数。例如:
let num = 12.5;
console.log(num.toExponential()); // "1.25e+1"
console.log(num.toExponential(2)); // "1.25e+1"
console.log(num.toExponential(4)); // "1.2500e+1"
根据 一篇文章带你了解JavaScript 数值方法(上篇)-技术圈,指数表示法适合表示非常大或非常小的数字。
toFixed(digits)
:将数字转换为指定小数位数的字符串,digits
指定小数点后的位数。例如:
let num = 12.525;
console.log(num.toFixed()); // "13"
console.log(num.toFixed(2)); // "12.53"
console.log(num.toFixed(4)); // "12.5250"
根据 JavaScript Number 参考手册 – W3School,toFixed()
返回的是字符串,适合用于显示格式化的数字。
toPrecision(precision)
:将数字转换为指定精度的字符串,precision
指定总位数(包括整数和小数部分)。例如:
let num = 12.525;
console.log(num.toPrecision(3)); // "12.5"
console.log(num.toPrecision(5)); // "12.525"
toString(radix)
:将数字转换为字符串,可以指定进制(2-36)。例如:
let num = 10;
console.log(num.toString(2)); // "1010" (二进制)
console.log(num.toString(8)); // "12" (八进制)
console.log(num.toString(16)); // "a" (十六进制)
根据 Number 对象 – JavaScript 教程 – 网道,使用 toString()
时,数字需要用括号括起来,如 (10).toString(2)
,否则 JavaScript 会将其解释为小数点。
valueOf()
:返回数字的原始值。例如:
let num = new Number(10);
console.log(num.valueOf()); // 10
这些方法可以直接在原始数字上调用,因为 JavaScript 会自动将原始数字转换为 Number 对象。例如:
let num = 10;
console.log(num.toString(2)); // "1010"
Number() 函数
Number()
函数可以将一个值转换为数字。如果值不能转换为数字,则返回 NaN
。根据 JavaScript Number() 函数 | 菜鸟教程,它的用法如下:
console.log(Number("3.14")); // 3.14
console.log(Number(" ")); // 0
console.log(Number("")); // 0
console.log(Number("99 88")); // NaN
如果参数是 Date 对象,Number()
函数返回自 UTC 1970 年 1 月 1 日午夜以来的毫秒数。
特殊值
JavaScript 中的数字有一些特殊值:
NaN
:非数字,表示一个无效的数字操作结果。例如,Number("abc")
返回NaN
。Infinity
:正无穷大,表示一个数字超过了 JavaScript 可以表示的最大值。例如,1 / 0
返回Infinity
。-Infinity
:负无穷大,表示一个数字小于 JavaScript 可以表示的最小值。例如,-1 / 0
返回-Infinity
。
这些特殊值可以通过 isNaN()
和 isFinite()
函数检查:
isNaN(value)
:将参数转换为数字,如果是NaN
返回true
。isFinite(value)
:将参数转换为数字,如果是常规数字(非NaN
、Infinity
或-Infinity
)返回true
。
原始数字与 Number 对象
在 JavaScript 中,数字可以是原始值(primitive),也可以是 Number 对象。原始数字是基本类型的值,而 Number 对象是原始数字的包装对象。例如:
let num1 = 10; // 原始数字
let num2 = new Number(10); // Number 对象
根据 JavaScript 中的 Number 类型 | kyleezhang`s Blog,通常情况下,使用原始数字更高效,因为它们不需要额外的对象包装。然而,Number 对象提供了额外的属性和方法,因此在某些情况下可能需要使用 Number 对象。但是在大多数情况下,推荐使用原始数字。
自动装箱
当你对一个原始数字调用方法时,JavaScript 会自动将它转换为 Number 对象,以便调用方法。例如:
let num = 10;
console.log(num.toString(2)); // "1010"
在这种情况下,JavaScript 会临时创建一个 Number 对象来调用 toString()
方法。根据 ECMAScript6-CSDN博客,这种自动装箱是 JavaScript 的特性之一,方便开发者直接在原始数字上调用方法。
注意事项
- 性能考虑:频繁创建 Number 对象可能影响性能,建议在需要对象方法时才使用
new Number()
。 - 浏览器兼容性:所有现代浏览器都支持 Number 对象的属性和方法,但建议检查旧版浏览器(如 IE8 及以下)的兼容性。
- 内存管理:由于自动装箱,原始数字和 Number 对象之间的转换可能增加内存使用,需注意优化。
总结
JavaScript 的 Number 对象提供了丰富的功能来处理数字,包括格式化、转换和获取特殊值。以下是关键要点:
- 数字在 JavaScript 中是浮点数,遵循 IEEE 754 标准。
- Number 对象的属性包括
MAX_VALUE
、MIN_VALUE
、NaN
、NEGATIVE_INFINITY
、POSITIVE_INFINITY
。 - Number 对象的方法包括
toExponential()
、toFixed()
、toPrecision()
、toString()
、valueOf()
。 Number()
函数用于将值转换为数字。- 特殊值包括
NaN
、Infinity
、-Infinity
。 - 原始数字和 Number 对象的区别,以及自动装箱机制。
通过掌握这些知识,你可以更有效地处理 JavaScript 中的数字。
关键引用
- Number – JavaScript | MDN
- JavaScript Number 参考手册 – W3School
- JavaScript Number() 函数 – W3School
- 数字类型 – JavaScript.info
- JavaScript Number 对象 | 菜鸟教程
- 一篇文章带你了解JavaScript 数值方法(上篇)-技术圈
- Number 对象 – JavaScript 教程 – 网道
- JavaScript Number() 函数 | 菜鸟教程
- JavaScript 中的 Number 类型 | kyleezhang`s Blog
- ECMAScript6-CSDN博客