var a= ? //?号位置 怎么写才会输出 true
console.log(
a == 1 &&
b == 2 &&
c == 3);
一、首先需要了解 == 隐式转换的规则
1、特殊情况
undefined == null
NaN != NaN
2、== 两侧类型相同 比较值
3、类型不同
(1)== 两侧 均为原始类型 转换为数字进行比较
(2)一侧为原始类型,一侧为对象,对象会转换成原始类型后进行比较。
二、对象转换成原始类型的步骤:
(1)先调用 valueOf方法 若无法转换成原始类型,则在调用toString方法
注:原始类型:number(整数、小数、NaN) string(字符串) null undefined boolean symbol(独一无二的值)
js 自动转换
string-->boolean // 除了空字符串 全部是true
number-->boolean //除了0和NaN 全部是true
对象 //所有对象都是true
null和unfined //是 false
上述的解题方法:
var a = {
n:0
valueOf:function() {
return this.n++
}
}
每次进行比较的时候 都会调用valueOf方法 依次返回 1,2,3......