==运算符如果有对象,调用对象的valueOf方法,如果返回的还是对象就调用toString方法再不行就报错了。
来看题目:
左边都是对象取非都返回false再被转换为0
再看右边 两个对象的valueOf都是Object.prototype.valueOf() 返回自身 还是无法比较
再调用toString:
前者返回空字符串‘’再被转换成数字0 所以前者为true
后者返回‘[object Object]’这样一个字符串 转化为数字是 NaN 所以后者为false
补充: [] == [] ,{} == {} 均为false 用==比较两个对象时只有是同一个对象为true
本文深入探讨了JavaScript中使用==运算符比较对象时的内部机制,包括对象的valueOf和toString方法的调用过程,以及如何将对象转换为基本类型进行比较。通过具体示例,解析了对象比较背后的细节。
3952

被折叠的 条评论
为什么被折叠?



