js判断数组是否为空

上周,有同事问我,为什么他对数组为空的判断是错误的。
我看着代码,很高兴。
他继续使用if(a)console.log('notempty'),结果什么也没有打印,因为空数组在JS中默认是实值。

想一想,数组就是对象。
除非该对象为 null 或未定义,否则将被视为 true。
所以你使用 if (a) console.log('notempty') ,它会直接打印出来。
您需要添加长度。

最简单最直接的方法就是看长度: javascript var a = []; if (a.length === 0) { console.log('空数组'); } 否则{ console.log('数组中有东西'); }
这绝对是正确的。
你可以用==,也可以用===,这取决于你是否严格。

哦,对了,还有一个很棒的操作,使用Array.isArray()来增加长度: javascript var a = []; if (!Array.isArray(a) || a.length === 0) { console.log('空数组或不是数组'); }
这个稍微复杂一点,但是可以同时判断是否是数组。
但每天使用第一种方法就可以了,非常快速和直接。

上次我在上海举办活动时,就有一个主唱踩到了这个陷阱。
总体结果条件 if (arr) { ... } 始终为 true。
最后调试了半天,添加了console.log(arr.length),发现,妈的,数组是空的!你生气不生气?

js判断对象是否为空

说白了,判断一个变量是否是对象,在 JavaScript 中其实有点复杂。
这确实很简单。
共有三种方法:
先说最重要的。
第三种方法是最直接也是最常用的方法。
例如if(!x),这个判定适用于任何非对象类型变量,包括null、undefined、NaN、''(空字符串)和0。
但是需要注意的是,这个方法不能直接与if(x)一起使用,因为if(x)也会将null和undefined视为假值。
所以,补充一下!物体前面有一把钥匙。

还有一点,如果想更准确的判断一个变量是否是简单对象(非空),可以添加! If(!x) 必须在对象前面创建。
这比 if(x) 更准确,因为 if(x) 也会将 null 视为 true。

还有一个更重要的细节。
如果您不想处理 null 或未定义的条件,可以使用 typeof 运算符。
typeof(x) == "Object" 可能会正确判断非空对象,但会错误地将 void 判断为对象。
所以,如果你想排除 null,你可以同时使用 typeof 和 !x。

一开始我以为直接使用if(x)就可以了,后来发现这是错误的,因为if(x)也会因为null和undefined而返回false,但这不是我们想要的结果。
等等,还有一件事,如果您使用 jQuery,您可以使用 isEmptyObject() 方法来检查对象是否为空。
如果对象是空对象,则此方法将返回 true;如果对象是非空对象,则此方法将返回 true如果对象或 null 将返回 false。

因此,如果您想要一种简单直接的方法,if(!x) 是一个不错的选择。
如果您需要更精确的控制,您可能需要将类型关闭与逻辑运算符结合使用。
很多人并没有注意到这一点,但是了解这些细节对于编写强大的 JavaScript 代码非常重要。
我认为值得尝试不同的方法来找到最适合您项目需求的方法。