返回

剖析JS Number对象解析的奥秘

前端

深入剖析 JavaScript Number 对象:掌控数值

在 JavaScript 的王国里,Number 对象扮演着至关重要的角色,充当着数值的守护者。它不仅可以创建表示数值的对象,还能将各种类型的数据转换成数字。让我们踏上一段探索之旅,揭开 Number 对象的神秘面纱!

Number 对象的双重身份

Number 对象兼具构造函数和工具函数的双重身份。作为构造函数时,它生成一个以数字为原始值的包装对象。例如:

let num = new Number(10);
console.log(num); // Number {[[PrimitiveValue]]: 10}

而作为工具函数时,它化身成解析高手,可以将字符串、布尔值等类型的值转换成数字:

let num = Number("10"); // 10
let num = Number(true); // 1
let num = Number(false); // 0

深入数值类型

Number 对象容纳的值类型自然离不开数字的范畴。它可以是整数、小数或指数形式。虽然作为 Number 对象的原始值,数字会被包装起来,但其本质依然如一:

let num = new Number(10);
console.log(typeof num); // "object"
let num = 10;
console.log(typeof num); // "number"

解析大师:parseInt 和 parseFloat

parseInt 和 parseFloat 堪称 Number 对象的得力助手,肩负着将字符串转换成数值的重任。它们功能分明,各有千秋:

  • parseInt:只解析字符串开头的数字,忽略后续字符:
let num = parseInt("10px"); // 10
let num = parseInt("10.5px"); // 10
  • parseFloat:解析字符串中的所有数字,包括小数点:
let num = parseFloat("10.5px"); // 10.5

辨别数值真伪:isNaN 和 isFinite

isNaN 和 isFinite 作为 Number 对象的判断卫士,负责判定一个值是否为合法的数值:

  • isNaN:专攻 NaN(非数字)的检测:
let num = NaN;
console.log(isNaN(num)); // true
  • isFinite:专注于有限数值的辨识:
let num = Infinity;
console.log(isFinite(num)); // false

总结:掌控数值的利器

Number 对象在 JavaScript 中占据着举足轻重的地位,它是一把处理数值的利器,提供了一系列方法和属性,让开发者轻松自如地驾驭数字世界。

常见问题解答

1. 如何将字符串转换为整数?
可以使用 parseInt() 方法。

2. 如何判断一个值是否为数字?
可以使用 typeof 操作符检查类型是否为 "number"。

3. NaN 和 Infinity 是什么?
NaN 表示非数字,而 Infinity 表示无穷大。

4. 如何比较两个浮点数?
由于浮点数表示存在误差,建议使用近似相等操作符 (==) 而不是严格相等操作符 (===)。

5. 如何将科学计数法表示的数字转换为普通数字?
可以使用 toExponential() 方法。