- 对象 == 字符串,对象 toString()变为字符串;
- null == undefined 相等,但是和其它值比较就不再相等;
- NaN == NaN 不相等,与其它的所有都不相等;
- 剩下的都是转换为数字。
"1" == true; => true对象变数字顺序,先将对象转成字符串,然后转成数字:.toString() => Number()
示例:a 为什么的情况下,下面的条件成立
var a = ?;
if(a == 1 && a == 2 && a == 3) {
console.log(1);
}//方法一:toString
var a = {
i: 0,
toString() {
return ++this.i;
}
};
//方法二:数据劫持
var i = 0;
//监听a, 获取a时进行处理,返回值
Object.defineProperty(window, 'a', {
get() {
return ++i;
}
});
注:defineProperty GETER拦截器中不能再次获取当前属性
//方法三
var a = [1, 2, 3];
//shift: 删除第一项并返回值
a.toString = a.shift;