gpt4 book ai didi

javascript - JavaScript 中的平等问题

转载 作者:行者123 更新时间:2023-11-28 12:16:43 24 4
gpt4 key购买 nike

我不明白为什么此代码片段中的最后一行返回 false。是不是和上面那行一样?

const Statuses = Object.freeze({
UNKNOWN : 0,
OK : 1,
ERROR : 2,
STOPPED : 3
});

class myStatus extends Object{
constructor() {
super();
this.status_id = Statuses.UNKNOWN;
}
valueOf(){
return this.status_id;
}
getStatus(){
return this.status_id;
}
}

var a = new myStatus();
a.status_id = Statuses.ERROR;
console.log(a == Statuses.ERROR);
console.log(a.getStatus() === Statuses.ERROR);
console.log(a.valueOf() === Statuses.ERROR); //Isn't this the same as the line bellow?
console.log(a === Statuses.ERROR); //Why is this false but the rest are true?

http://jsbin.com/ritumesegi/edit?js,console

我得到 a == Statuses.ERROR 为 true,但其余的不应该给出相同的结果吗?尤其是最后2个。不是

a === Statuses.ERROR

同上

a.valueOf() === Statuses.ERROR

最佳答案

只是因为它们不是同一类型,请检查以下内容:

console.log(typeof(Statuses.ERROR)); // "number"
console.log(typeof(a) ); // "object"

区别:
== 仅评估值。
=== 评估值和类型。

引用:
https://www.w3schools.com/jsref/jsref_operators.asp

http://jsbin.com/jaquzikonu/edit?js,console

关于javascript - JavaScript 中的平等问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47896665/

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