1.类型判断
typeof(判断null有误差,对对象类型及其子类型无法区分)
instanceof(无法判断一个值是数组还是普通对象)
object.prototype.toString()(推荐)
Array.isArray()(es5.1,不支持IE6~8)
2.空值判断
空数组判断(先判断是数组类型,然后length>0)
空对象判断(
Object.getOwnPropertyNames():返回的结果数组length>0
json对象转换为字符串:是否与“{}”相等
for...in...循环判断:是否有属性
Object.keys():ES6,返回属性名组成的数组
直接使用对象属性判断:obj&&obj.name
)
3.等号使用
双等号==:
如果两个值类型相同,再进行===比较
如果两个类型不同,也有可能相等,需根据以下规则进行类型转换再比较(
如果一个是null,一个是undefined,那么相等
如果一个是字符串,一个是数值,则把字符串转换成数值之后再比较
)
三等号===:
如果类型不同,就一定不相等
如果两个数值且为同一个值,那么相等;如果至少其中一个为NaN,那么不相等
如果两个都是字符串且为相同字符,那么相等,否则不相等
如果两个值都是true或false,那么相等
如果两个值都引用同一个对象或者函数,那么相等,否则不相等
如果两个值都是null,或者undefined,那么相等