为什麽 严格比较运算子 === 不会执行 Object.valueOf 而 一般 比较运算子 == 却执行 Object.valueOf ,MDN的文件在介绍 === 并没有看到相关的说明,请问关於这部份的文件要在哪里找到呢?let num = 0;const a = { valueOf: function() {
++num; return num;
}
};console.log(a == 1, a.valueOf());// false 2 , a===1 ==> 比较时执行了 valueOf() 总共执行 2 次console.log(a === 1, a.valueOf());// false 3 , a===1 ==> 比较时没有执行 valueOf() 总共执行 1 次
1 回答

GCT1015
TA贡献1827条经验 获得超4个赞
因为 ==
运算符,比较对象和基础数据类型,对象会进行隐式转换为基础数据类型。(一般先valueOf后toString)
而 ===
运算符,如果两者数据类型不同,直接会返回false。
添加回答
举报
0/150
提交
取消