1 判断变量为空对象
判断一个变量是否为空对象时,可以通过 for...in
语句遍历变量的属性,然后调用 hasOwnProperty()
函数,判断是否有自身存在的属性,如果存在则不为空对象。
function isEmpty(obj) {
for (item in obj) {
if (obj.hasOwnProperty(item)) {
return false;
}
}
return true;
}
console.log(isEmpty({ a: 1 }));
console.log(isEmpty({}));
2 判断变量为空数组
判断变量为空数组时,首先需要判断变量是否为数组,然后通过 length
属性确定。
function isEmpty(arr) {
if (Array.isArray(arr) && !arr.length) {
return true;
}
return false;
}
function isEmpty(arr) {
if (arr instanceof Array && !arr.length) {
return true;
}
return false;
}
console.log(isEmpty([1, 2]));
console.log(isEmpty([]));
3 判断变量为空字符串
判断变量是否为字符串时,可以直接将其与空字符串比较,或者调用 trim() 函数去掉前后的空格,然后判断字符串的长度。
str === '' || str.trim().length === 0
4 判断数据是数组还是对象
注意:先判断是否为数组,再判断是否为对象。
function _isArrOrObj(value) {
if (typeof value !== 'object') return '既不是数组也不是对象';
// if (value instanceof Array) return '是数组'
if (Array.isArray(value)) return '是数组'
return '是对象'
}
console.log(_isArrOrObj(1)) // '既不是数组也不是对象'
console.log(_isArrOrObj({})) // '是对象'
console.log(_isArrOrObj([])) // '是数组'
console.log(_isArrOrObj(function(){})) // '既不是数组也不是对象'