- 对象与数字比较:
- 基本类型转换规则:首先调用对象的
valueOf
方法,如果返回的不是原始值,则调用 toString
方法。然后将返回的原始值转换为数字类型进行比较。
- 示例:
const obj = {
valueOf: function() {
return 5;
}
};
console.log(obj == 5); // true,因为obj通过valueOf方法返回5,直接比较相等
const obj2 = {
toString: function() {
return '10';
}
};
console.log(obj2 == 10); // true,obj2调用toString方法返回'10',转换为数字10后比较相等
- 对象与字符串比较:
- 基本类型转换规则:调用对象的
toString
方法,将返回值与字符串进行比较。
- 示例:
const obj3 = {
toString: function() {
return 'hello';
}
};
console.log(obj3 == 'hello'); // true,obj3调用toString方法返回'hello',直接比较相等