isEmpty
5.23 isEmpty
5.23.1 语法
_.isEmpty(object)
5.23.2 说明
如果object 不包含任何值(没有可枚举的属性),返回true。 对于字符串和类数组(array-like)对象,如果length属性为0,那么_.isEmpty检查返回true。
5.23.3 代码示例
示例一:empty的情况
_.isEmpty(); //=> true
//五种基本类型
_.isEmpty(undefined); //=> true
_.isEmpty(null); //=> true
_.isEmpty(0); //=> true
_.isEmpty(''); //=> true
_.isEmpty(false); //=> true
//复杂对象
_.isEmpty([]); //=> true
_.isEmpty({}); //=> true
示例二:arguments的length为0为empty(坑)
var args = function() {
return arguments;
};
_.isEmpty(args); //=> true
//带一个参数
_.isEmpty(args('')); //=> 这里是?
示例三: isEmpty正则返回true
正则对象上的原链属性为空所以为empty,返回true
_.isEmpty(new RegExp('')); //=> true
_.isEmpty(new RegExp('/abc/')); //=> true
5.23.4 源码
_.isEmpty = function(o) {
//判定0,"",null,undefined,false为empty
if (o == null) return true;
//数组,字符串和arguments根据length判断。
if (isArrayLike(o) && (_.isArray(o) || _.isString(o) || _.isArguments(o))) {
return o.length === 0;
}
//对象根据原型上的数量判断
return _.keys(o).length === 0;
};
5.23.5 原始值的对象表示方式依然可以用_.isEmpty
new String('') == null; //=> false
_.isEmpty(new String('')); //=> true