{}与null的区别
{ }是一个不完全空对象,原型链上有Object,
null是完全空对象,原型链也没有,因此执行null.length
因此null instanceof Object === false。
[]
[]原型链上还比{}多一个Array,链的最低端还是Object
Tips
在转化布尔值时,对于对象而言,只有null转为false, 其他的都为true,
因此,一定要注意 [] {} 都会被转为true.
在后端传递数据过来进行判断时,为数组时判断数组的长度,为对象时直接if(obj)。
如果可能传过来null,也有可能传过来数组,并且不希望空数组执行语句,则可以 if(res && res.length),
res 和 res.length位置不能换,如果为null,则直接返回null,后面的res.length不执行,从而不报错,
如果为[],则res.length为0,返回0, 也将空数组去除了。