JavaScript Number对象完全指南
编程小白也能轻松掌握的Number对象核心知识点
什么是Number对象?
在JavaScript中,Number对象是处理数字值的包装对象。你可以把它想象成一个”数字工具箱”,里面装满了处理数字的各种工具(属性和方法)。
简单理解:
当你在代码中写一个普通数字时(比如42),它是原始值。但当你需要在这个数字上调用方法时,JavaScript会自动把它包装成Number对象,这样你就可以使用Number对象提供的各种功能了。
创建Number对象
有两种方式创建Number对象:
1. 使用构造函数(不常用)
// 创建Number对象
let numObj = new Number(10);
console.log(typeof numObj); // “object”
console.log(numObj); // Number {10}
let numObj = new Number(10);
console.log(typeof numObj); // “object”
console.log(numObj); // Number {10}
2. 字面量方式(常用)
// 数字字面量(实际使用时JavaScript会自动处理)
let num = 10;
console.log(typeof num); // “number”
// 但我们可以直接在字面量上调用Number方法
console.log((10).toString()); // “10”
let num = 10;
console.log(typeof num); // “number”
// 但我们可以直接在字面量上调用Number方法
console.log((10).toString()); // “10”
最佳实践: 大多数情况下,直接使用数字字面量即可,JavaScript会在需要时自动转换为Number对象
Number对象的属性
这些是Number对象自带的一些特殊值,可以直接通过Number.属性名
访问:
常用属性:
// 最大可表示的数
console.log(Number.MAX_VALUE); // 1.7976931348623157e+308
// 最小可表示的数(接近0的正数)
console.log(Number.MIN_VALUE); // 5e-324
// “非数字”值(Not-A-Number)
console.log(Number.NaN); // NaN
// 正无穷大
console.log(Number.POSITIVE_INFINITY); // Infinity
// 负无穷大
console.log(Number.NEGATIVE_INFINITY); // -Infinity
console.log(Number.MAX_VALUE); // 1.7976931348623157e+308
// 最小可表示的数(接近0的正数)
console.log(Number.MIN_VALUE); // 5e-324
// “非数字”值(Not-A-Number)
console.log(Number.NaN); // NaN
// 正无穷大
console.log(Number.POSITIVE_INFINITY); // Infinity
// 负无穷大
console.log(Number.NEGATIVE_INFINITY); // -Infinity
注意: NaN与任何值都不相等,包括它自己!判断NaN应该使用isNaN()函数
Number对象的方法
这些是Number对象提供的工具方法,用于操作和转换数字:
1. toString() – 转换为字符串
let num = 15;
// 转换为十进制字符串
console.log(num.toString()); // “15”
// 转换为二进制字符串
console.log(num.toString(2)); // “1111”
// 转换为十六进制字符串
console.log(num.toString(16)); // “f”
// 转换为十进制字符串
console.log(num.toString()); // “15”
// 转换为二进制字符串
console.log(num.toString(2)); // “1111”
// 转换为十六进制字符串
console.log(num.toString(16)); // “f”
2. toFixed() – 固定小数位数
let price = 19.99;
// 保留2位小数(常用于货币)
console.log(price.toFixed(2)); // “19.99”
// 保留0位小数(四舍五入)
console.log(price.toFixed(0)); // “20”
// 注意:返回的是字符串!
// 保留2位小数(常用于货币)
console.log(price.toFixed(2)); // “19.99”
// 保留0位小数(四舍五入)
console.log(price.toFixed(0)); // “20”
// 注意:返回的是字符串!
3. toExponential() – 科学计数法
let bigNum = 123456;
// 转换为科学计数法字符串
console.log(bigNum.toExponential()); // “1.23456e+5”
console.log(bigNum.toExponential(2)); // “1.23e+5”
// 转换为科学计数法字符串
console.log(bigNum.toExponential()); // “1.23456e+5”
console.log(bigNum.toExponential(2)); // “1.23e+5”
4. toPrecision() – 指定有效数字
let num = 123.456;
console.log(num.toPrecision(5)); // “123.46”(5位有效数字)
console.log(num.toPrecision(2)); // “1.2e+2″(2位有效数字)
console.log(num.toPrecision(5)); // “123.46”(5位有效数字)
console.log(num.toPrecision(2)); // “1.2e+2″(2位有效数字)
5. valueOf() – 获取原始值
let numObj = new Number(42);
console.log(numObj.valueOf()); // 42(原始数字值)
console.log(numObj.valueOf()); // 42(原始数字值)
Number原始值 vs Number对象
关键区别:
- 原始值:轻量级,直接存储数值(如:let n = 10)
- Number对象:是对象,有属性和方法(如:new Number(10))
// 原始值
let num1 = 100;
console.log(typeof num1); // “number”
// Number对象
let num2 = new Number(100);
console.log(typeof num2); // “object”
// 比较(值相同,但类型不同)
console.log(num1 == num2); // true(值相等)
console.log(num1 === num2); // false(类型不同)
let num1 = 100;
console.log(typeof num1); // “number”
// Number对象
let num2 = new Number(100);
console.log(typeof num2); // “object”
// 比较(值相同,但类型不同)
console.log(num1 == num2); // true(值相等)
console.log(num1 === num2); // false(类型不同)
自动装箱: 当你在原始值上调用方法时,JavaScript会自动将其包装成临时Number对象,调用完后再丢弃这个临时对象
总结:Number对象核心要点
- Number对象是JavaScript中处理数字的工具箱
- 实际编码中多使用数字字面量,JavaScript会自动处理转换
- 常用方法:toString(), toFixed(), toExponential(), toPrecision()
- 注意特殊值:NaN, Infinity 的处理方式
- 原始值和对象有区别,但大多数情况下不必手动创建对象
- 处理小数精度时要特别小心(如0.1 + 0.2 !== 0.3)
核心知识点速查
- Number对象是什么?
- 创建Number对象
- Number属性
- 常用方法
- toString()转换
- toFixed()小数位
- toExponential()科学计数
- toPrecision()有效数字
- 原始值 vs 对象
- 特殊值处理
记忆口诀
数字处理三法宝:
toString() 转文本
toFixed() 定小数
toPrecision() 控精度
特别注意:
0.1 + 0.2 ≠ 0.3
NaN ≠ NaN
Infinity 无穷大