为什么typeof null –>object?
解析器在存值的时候会以二进制形式存入,
编译时,如果一个值的二进制的前三位均为0的话,
那用typeof检测该值时,拿到的就是object
在null转二进制时,所有位都是0,所以typeof null —->object
为什么NaN != NaN —>true
NaN这个东西在计算机数值里面,是个浮点数,小数部分的位连续多位是不确定的,即在一定范围内的这个浮点数在获取的时候我们都可以叫它NaN
V8引擎调用c++的类库limit 使用它的numeric_limit
明显生成的是浮点数据类型,即每次生成的NaN是不同的数值
所以不相等
为什么js的对象的key值不能是对象
当试图用非字符串类型做对象key值时,其值会被toString方法静默转为字符串类,
当非字符串类型为对象时,如果作为key的两个对象属于一个类的实例,
那么他们转化成字符串的结果将会是相同的,赋值时,就会导致后续赋值覆盖前者的值