前言
在平时代码编写过程中,时常需要将值为空作为特殊情况考虑,因而有了如何判空的问题。在此对空值及其判空方法做个总结。
空值与判空
首先如何认定为空值是与变量的数据结构相关的,所以先列出JS中的所有数据结构类型。
JS中的数据类型分为两类,一类是简单数据类型(又叫值类型),另一类是复杂数据类型(又叫引用类型)。
简单数据类型:字符串(String)、数字(Number)、布尔(Boolean)、NULL、undefined、Symbol。
复杂数据类型:数组(Array)、对象(Object)、函数(Functoin)
对于变量来讲,null和undefined是最为常见的空值代表,但要注意到null并不完全等于undefined。
判定空字符串
1.判定字符串''
对字符串来讲,''是最基本最常见的空字符串情况。对于此种情况可以想到两个最简单的方法:
!取反判定
- 通过包装对象调用
length属性进行判定
2.判定带空格的字符串' '
在这种较为特殊的情况下,再尝试上面的方法可以看到不再适用。
在这个时候,可以使用包装对象调用trim()方法从字符串两侧删除空格,然后就能继续使用上述方法判空。
另外,trim()方法也能够删除\n、\r这类视为空的转义字符。
判定空数组
判定空数组的情况没有那么多,但是方法确实有好几种。
首先需要说明,通过!取反来判定是不可行的
- 通过查询
length属性进行判定 []==false进行判定
在此过程中,会自动进行类型转换。
- 使用
join()方法将数组转为字符串处理
通过join()方法可将数组转化为字符串,然后就能按照字符串流程进行处理了,但是这种方法对于['','','']和[[],[],[]]这样的数组,若不认为这些是空数组的话,是判定不了的。这种方法主要是作为一种解决问题的思路提出,即可以将数组转为字符串以便某些操作的处理。判定空对象
需要判定空对象的情况我只偶尔碰到过,且大多时候都有避开判定是否为空对象的更优解,所以此处的方法均为从网上搜集来的。 for ... in
通过for ... in对目标对象进行枚举,如果有能枚举的属性就说明该对象不为空。JSON.stringfy()
通过该方法将对象转为JSON字符串,然后将字符串直接与{}进行比对就行。Object.keys()
将目标对象作为参数传进去,返回值是含有对象所有属性名的数组。然后即可通过判定数组的方法进行处理。后记
在判定过程中,涉及到很多类型转化以及语句的返回值,而由于Js的特性,时常会有一些让人意向不到的结果,所以在此推个仓库,供大家在学习之余乐一乐。参考文献
如何在 JavaScript 中判断一个对象是否为空
Github Repository:wtfjs
- 本文作者: Kylin
- 本文链接: https://kylinnnnn.github.io/2022/02/19/Javascript中的空值与判空/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!