在 JavaScript 中,有两种常见的创建数字对象的方式:new Number()
和 Number()
。这两种方法看起来很相似,但实际上它们之间有一些重要的区别。
new Number()
new Number()
是一个构造函数,用于创建一个包含指定值的 Number 对象。当您使用 new
关键字以及构造函数调用时,JavaScript 会创建一个新的 Number 对象,并将其赋予变量。这意味着它会创建一个包含指定值的对象,而不是简单地返回一个原始数字值。
const numObj = new Number(42); console.log(typeof numObj); // "object" console.log(numObj instanceof Number); // true
请注意,返回的是一个对象,而不是一个原始类型值。如果您想要获取对象的值,可以使用 valueOf()
方法。
console.log(numObj.valueOf()); // 42
Number()
Number()
是一个全局函数,用于将传递给它的参数转换为一个数字值,并返回该值。如果无法将参数转换为数字,则返回 NaN
。
const numValue = Number("42"); console.log(typeof numValue); // "number"
请注意,返回的是一个原始数字类型值,而不是对象。
区别
最大的区别在于 new Number()
返回一个 Number 对象,而 Number()
返回一个原始数字类型值。由于 JavaScript 引擎执行操作时更熟悉原始数字类型值,因此在大多数情况下,使用 Number()
更加高效。
在 JavaScript 中,对象比原始值要占用更多的内存和处理时间,这意味着如果您没有特殊的需求需要使用 Number 对象,则应该尽可能地避免使用它们。
示例
-- -------------------- ---- ------- ----- ------ - --- ----------- ----- -------- - ------------- ------------------------------ -- -- ---------------------- -- -- ------------------ -------- -- -------- ------------------ ---------- -- -------- -- -- ------ - ---------- ------ ------------------ ------ --- ---------- -- ---- ------------------ -------- --- ---------- -- ---- ------------------ ---------- -------- -- ---- -------------------- ---------- -------- -- -----
指导意义
在大多数情况下,使用 Number()
而不是 new Number()
更为合适。只有在需要将数字作为对象时才使用 new Number()
。在编写代码时,请始终记得考虑内存和性能问题,并尽量减少不必要的对象创建。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/26203