JavaScript Number 对象


关键要点

  • 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 参考手册 – W3SchooltoFixed() 返回的是字符串,适合用于显示格式化的数字。

  • 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):将参数转换为数字,如果是常规数字(非 NaNInfinity-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_VALUEMIN_VALUENaNNEGATIVE_INFINITYPOSITIVE_INFINITY
  • Number 对象的方法包括 toExponential()toFixed()toPrecision()toString()valueOf()
  • Number() 函数用于将值转换为数字。
  • 特殊值包括 NaNInfinity-Infinity
  • 原始数字和 Number 对象的区别,以及自动装箱机制。

通过掌握这些知识,你可以更有效地处理 JavaScript 中的数字。

关键引用


发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注