为什麽 严格比较运算子 ===
不会执行 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 次
因为
==
运算符,比较对象和基础数据类型,对象会进行隐式转换为基础数据类型。(一般先valueOf后toString)而
===
运算符,如果两者数据类型不同,直接会返回false。给你贴个文档地址