gpt4 book ai didi

javascript - 为什么 new Number(8) 不完全等于 8?

转载 作者:行者123 更新时间:2023-11-29 19:19:19 26 4
gpt4 key购买 nike

警报返回 false 而不是 true?因为 x 和 y 的类型都是数字,并且根据 === 的文档,它是一个严格的比较,它检查类型和值。

var x=8;
var y=new Number(8);
alert(typeof x);
alert(y===x);//false

PS:JavaScript 新手仍然理解基本概念。

最佳答案

基本类型BooleanNumberString,都有对应的对象表示,可以通过new Boolean创建new String 等。正如我已经暗示的那样,它们返回对象对象 是不同于数字数据类型,因此严格比较将返回false

但是,这些构造函数并未得到广泛使用,因为正如您发现的那样,它们不能很好地处理原语。封装与 原始 数字值相同值的 Number 对象不(严格)等于所述原始值。

您可能更经常看到的是在没有new 的情况下使用Number 函数。如果在没有 new 的情况下调用,Number 只是执行类型转换,到原始数值。


那么为什么我们有 NumberStringBoolean 对象呢?

事实证明你一直在使用这些对象而(可能)不知道,例如当你做的时候

"primitive".substring(0, 5)

在 JavaScript 中,只有对象 可以有属性。原始值不能有属性。然而,您可以调用 substring 方法,就好像它是值的属性一样。那是因为 JavaScript 执行了称为自动装箱 的操作。当您尝试像对象一样使用原始值时(例如,通过访问属性),JavaScript 会在内部临时将原始值转换为其等效的对象版本。

关于javascript - 为什么 new Number(8) 不完全等于 8?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33696067/

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