工作期间发现判断空对象有点生疏,顺便归纳一下 空字符串 null 还有 空对象 的判断方法。
判断空对象
ES6 Object.keys()
+length
1 2 3 4 5 6 7
| var obj = {}; var arr = Object.keys(obj); if (arr.length == 0){ console.log("对象为空"); }else { console.log("对象不为空"); }
|
JSON.stringify()
1 2 3 4 5 6 7
| var obj = {}; var objStr = JSON.stringify(obj); if(objStr === '{}') { console.log("对象为空"); }else { console.log("对象不为空"); }
|
判断空字符串
不考虑空格
1 2 3 4
| const strings = '' if (string.length == 0) { alert('不能为空') }
|
考虑空格
正则
- string的replace() 方法
- 正则中\s匹配任何空白字符,包括空格、制表符、换页符等等。等价于
[ \f\n\r\t\v]
。注意 Unicode 正则表达式会匹配全角空格符。
- 方法1:使用 正则 去除头尾的空格:
1 2 3 4 5
| const strings = ' ';
if (strings.replace(/(^\s*)|(\s*$)/g, "").length == 0) { alert('不能为空'); }
|
- 方法2:使用 正则 判断空格是否出现过:
[]
为表达式,匹配[...]
中的所有字符
+
号代表前面的字符必须至少出现一次(1次或多次)1 2 3 4 5 6 7
| function isNull( str ){ if ( str == "" ) return true; var regu = "^[ ]+$"; var re = new RegExp(regu); return re.test(str); }
|
trim()
- 使用str.trim()删除字符串的头尾空白符
1 2 3 4 5
| const strings = ' ';
if (strings.trim().length == 0) { alert('不能为空'); }
|
判断null
不要使用!
- 会误判undefined/数字零/false:
1 2 3 4 5
| const exp = null // 如果 exp 为 undefined/数字零/false,也会得到与 null 相同的结果 if (!exp) { alert("is null/undefined/0/false") }
|
不要使用==
- 会同时判断null与undefined的情况,毕竟
null == undefined
不要使用typeof
- typeof能判断 除null 的基础类型,null 空指针,也算是一个对象
1
| typeof null === 'object'
|