a = Object(1) // Number {1}
b = new Object(1) // Number {1}
c = Number(1)
a == c // true
b == c // true
a == b // false ?
如果说因为a和b都是对象,没有类型转换,那为什么 a==c, b==c却可以类型转换呢?
说明Object(1)与new Object(1) 所产生的内存地址不一致,所以a==b才会返回false,这与JS对象实例化的特点有关
对象比较地址
object默认是比较实例本身,两个对象实例不等。
number做了处理,比较的是具体的值,所以等。
a和b输出的是Number(1)是对象,对象比较是地址比较所以不同
c输出是1,==是弱类型判断,等号两边的类型不同时,会自动转成同一类型进行比较,所以Number(1)或转为数字1再和c进行比较
数字1的比较是值比较,所以1 == 1
我知道为什么了,因为c = Number(1) // 1
我误以为是new Number(1)了,谢谢大家