1、为什么typeof null 是object? 不同的数据类型在底层都是通过二进制表示的,二进制前三位为000则会被判断为object类型,而null底层的二进制全都是0,那前三位肯定也是000,所以被判断为object 2、== 与 === 的区别?
==:在比较过程中会存在隐式转换 ===:需要类型相同,值相同,才能为true
3、JavaScript的隐式转换规则?
1、转成string类型: +(字符串连接符)
2、转成number类型:++/--(自增自减运算符) + - * / %(算术运算符) > < >= <= == != === !=== (关系运算符)
3、转成boolean类型:!(逻辑非运算符)
4、双等号左右两边的转换规则?
1、null == undefined 为 true
2、如果有一个操作数是布尔值,则在比较相等性之前先将其转换为数值——false转换为0,而true转换为1;
3、如果一个操作数是字符串,另一个操作数是数值,在比较相等性之前先将字符串转换为数值
4、如果一个操作数是对象,另一个操作数不是,则调用对象的toString()方法,用得到的基本类型值按照前面的规则进行比较
5、undefined >= undefined 为什么是 false ? 按照隐式转换规则,可转换成NaN >= NaN,NaN 不等于 NaN,也不大于,所以是false 6、null >= null 为什么是 true? 按照隐式转换规则,可转换成0 >= 0,0 等于 0,所以是true 7、0.1 + 0.2 === 0.3,对吗? 不对,JavaScript的计算存在精度丢失问题