JavaScript 标准库之 Number 对象详解
jstutorial Javascript tutorial book 项目地址: https://gitcode.com/gh_mirrors/js/jstutorial
概述
在 JavaScript 中,Number 对象是处理数值数据的重要工具。它既可以作为构造函数创建数值对象,也可以作为工具函数进行类型转换。理解 Number 对象的特性和方法对于处理数字运算和转换至关重要。
Number 对象的基本使用
构造函数模式
当使用 new 操作符调用 Number 构造函数时,它会创建一个 Number 对象实例:
let numObj = new Number(10);
console.log(typeof numObj); // "object"
需要注意的是,直接使用 Number 构造函数创建的数值对象与原始数值类型是不同的。
工具函数模式
作为工具函数使用时,Number() 可以将其他类型的值转换为数值:
console.log(Number(true)); // 1
console.log(Number("123")); // 123
console.log(Number("abc")); // NaN
这种转换行为在处理用户输入或数据类型转换时非常有用。
Number 对象的静态属性
Number 对象提供了一系列静态属性,表示 JavaScript 中的特殊数值和范围值:
-
无限值表示
Number.POSITIVE_INFINITY
: 正无穷大 (Infinity)Number.NEGATIVE_INFINITY
: 负无穷大 (-Infinity)
-
非数值表示
Number.NaN
: 表示"非数字"的特殊值
-
数值范围限制
Number.MAX_VALUE
: JavaScript 能表示的最大正数 (~1.79e+308)Number.MIN_VALUE
: JavaScript 能表示的最小正数 (~5e-324)
-
安全整数范围
Number.MAX_SAFE_INTEGER
: 能精确表示的最大整数 (2^53 - 1)Number.MIN_SAFE_INTEGER
: 能精确表示的最小整数 -(2^53 - 1)
这些属性在数值计算和范围检查时非常有用,特别是在处理极大或极小的数值时。
Number 对象的实例方法
toString() - 数值转字符串
toString()
方法可以将数值转换为字符串,并可指定进制:
let num = 15;
console.log(num.toString()); // "15" (默认十进制)
console.log(num.toString(2)); // "1111" (二进制)
console.log(num.toString(8)); // "17" (八进制)
console.log(num.toString(16)); // "f" (十六进制)
使用技巧:
- 直接对整数调用时,需要用括号包裹或添加额外小数点
- 小数也可以直接调用此方法
toFixed() - 固定小数位数
toFixed()
方法将数值转换为指定位数小数的字符串表示:
let pi = 3.1415926;
console.log(pi.toFixed(2)); // "3.14"
console.log(pi.toFixed(4)); // "3.1416" (自动四舍五入)
注意事项:
- 参数范围应在 0-20 之间
- 对于整数也需要用括号包裹调用
toExponential() - 科学计数法表示
toExponential()
将数值转换为科学计数法形式的字符串:
let largeNum = 123456;
console.log(largeNum.toExponential()); // "1.23456e+5"
console.log(largeNum.toExponential(2)); // "1.23e+5"
toPrecision() - 指定有效数字
toPrecision()
方法返回指定位数有效数字的字符串表示:
let num = 123.456;
console.log(num.toPrecision(4)); // "123.5"
console.log(num.toPrecision(2)); // "1.2e+2"
注意:由于浮点数精度问题,四舍五入结果可能不如预期精确。
扩展 Number 原型的方法
我们可以通过扩展 Number.prototype 来为所有数值添加自定义方法:
// 添加加法方法
Number.prototype.add = function(x) {
return this + x;
};
console.log((8).add(2)); // 10
// 添加范围生成方法
Number.prototype.range = function() {
let result = [];
for (let i = 0; i <= this; i++) {
result.push(i);
}
return result;
};
console.log((5).range()); // [0, 1, 2, 3, 4, 5]
重要限制:
- 原始数值类型不能直接添加属性
- 自定义方法必须通过 Number.prototype 添加
实际应用建议
- 数值转换:优先使用 Number() 函数进行显式类型转换
- 格式化输出:使用 toFixed() 或 toPrecision() 控制显示格式
- 进制转换:toString() 配合参数实现不同进制转换
- 安全计算:大整数运算时注意 MAX_SAFE_INTEGER 限制
理解并熟练运用 Number 对象的各种特性,能够帮助开发者更好地处理 JavaScript 中的数值运算和转换需求。
jstutorial Javascript tutorial book 项目地址: https://gitcode.com/gh_mirrors/js/jstutorial
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考