gpt4 book ai didi

使用函数构造函数创建对象时javascript双重相等比较

转载 作者:行者123 更新时间:2023-11-29 23:40:08 25 4
gpt4 key购买 nike

为什么是假的?

因为双相等只比较值所以它应该返回真或者它是比较引用(地址值)?

var a = new Number(3);
var b =new Number(3);

a == b ; // false
a === b ; // false

如下返回 true :(结果符合预期)

var a = new Number(3);
var b = 3;

a == b ; // true
a === b; // false

最佳答案

我认为这更像是一个类型强制问题。因此,您必须了解处理对象和非对象的规则和顺序。

var a = new Number(3);
var b =new Number(3);

a == b ; // false
a === b ; // false

在您的情况下,您使用 new 关键字导致您将值包装在一个对象中。 var avar b 是两个新的/不同的对象。 Javascript 中的对象是唯一的。所以 ===== 只有在比较同一对象的同一实例时才会为真。 (所以是对该对象的引用)。

这样做的原因:

var a = new Number(3);
var b = 3;

a == b ; // true
a === b; // false

是因为管理隐式类型强制的规则:

If Type(x) is either String or Number and Type(y) is Object, returnthe result of the comparison x == ToPrimitive(y).

If Type(x) is Objectand Type(y) is either String or Number, return the result of thecomparison ToPrimitive(x) == y.

所以 var a 首先被转换为原始值,然后进行比较,得到一个真值。

深入解释:https://github.com/getify/You-Dont-Know-JS/blob/master/types%20&%20grammar/ch4.md

关于使用函数构造函数创建对象时javascript双重相等比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45431450/

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