gpt4 book ai didi

javascript - 为什么不应该使用 Number 作为构造函数?

转载 作者:行者123 更新时间:2023-12-03 02:15:21 25 4
gpt4 key购买 nike

我在 JSLint 中输入了以下语句:

var number = new Number(3);

并收到以下消息:

Do not use Number as a constructor.

这是为什么呢?该语句创建一个数字对象,而不是一个原始值,所以我不明白为什么使用 new是一个问题。

编辑:感谢您的所有回复。他们让我进一步思考,所以我发布了一个后续问题 here .

最佳答案

除了破坏 === 和 typeof 返回“object”之外,使用 Number 构造函数还会改变值在 bool 上下文中的使用方式。由于“new Number(0)”是一个对象,而不是文字值,因此它的计算结果为“true”,因为它不为空。例如:

var n1 = 0;
var n2 = new Number(0);

n1 == n2 // true
n1 === n2 // false
if (n1) {
// Doesn't execute
}
if (n2) {
// Does execute, because n2 is an object that is not null
}

比破坏数字文字和 Number 对象之间的 === 更糟糕的是, == 甚至在两个 Number 对象之间不起作用(至少不是以直观的方式 - 它们测试同一性,而不是相等性)。

var n1 = new Number(3);
var n2 = new Number(3);

alert(n1 == n2); // false
alert(n1 === n2); // false

关于javascript - 为什么不应该使用 Number 作为构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/369220/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com