工作中偶尔需要对数组和对象进行判断,判断数组和对象是否为空,但是空数组[ ]和空对象{ }的布尔值一直是为true的。空字符串" "才为false
new Boolean([]) // true
new Boolean({}) // true
new Boolean("") // false
以数组为例,我们在控制台打印字面量定义的数组查看原因。可以看出字面量定义的空数组,仍然是Array的实例对象,因为 [ ] 是一个引用类型。符合JavaScript万物皆对象。
但是字符串为什么就显示为false呢?而且找不到字符串的构造函数。
字符串为JavaScript中基本类型,其创建字符串过程经历了:创建一个String基本包装类型实例 --> 通过方法给字符串赋值 --> 再销毁String基本包装类型的过程;
同理在基本类型调用方法的时候,也是先创建一个基本包装类型 --> 调用实例方法 --> 再销毁基本包装实例的过程。