javascript 比较运算子 == , === 和 valueOf 的关系

为什麽 严格比较运算子 === 不会执行 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 次


慕虎7371278
浏览 411回答 1
1回答

红糖糍粑

因为 ==运算符,比较对象和基础数据类型,对象会进行隐式转换为基础数据类型。(一般先valueOf后toString)而 ===运算符,如果两者数据类型不同,直接会返回false。给你贴个文档地址
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript