.isEmpty(11)当对象为数字是返回为true let _ = require(‘underscore’); console.log(.isEmpty(11)); /usr/local/bin/node test2.js true 看了源代码
// Is a given array, string, or object empty? // An “empty” object has no enumerable own-properties. .isEmpty = function(obj) { if (obj == null) return true; if (.isArray(obj) || _.isString(obj) || .isArguments(obj)) return obj.length === 0; for (var key in obj) if (.has(obj, key)) return false; return true; };还是不太懂,希望给个建议
最后写个对promise使用的感想 全部操作放进promise用reject返回err,集中处理err,promise的好处
我只用他检查没有key的对象。 数组用_.size=0 字符串或数字 取非
来自酷炫的 CNodeMD
@dbit-xia 其实这样也挺好的 但我感觉用underscore方便一些而且功能很多轻量级插件 所以一直在用 今天用它进行检查number类型数据发现不能判断,看代码也看不懂毕竟新手 谢谢你的回复
源码:
_.isEmpty = function(obj) {
if (obj == null) return true;
if (isArrayLike(obj) && (_.isArray(obj) || _.isString(obj) || _.isArguments(obj))) return obj.length === 0;
return _.keys(obj).length === 0;
};
_.keys 源码:
_.keys = function(obj) {
if (!_.isObject(obj)) return [];
if (nativeKeys) return nativeKeys(obj);
var keys = [];
for (var key in obj) if (_.has(obj, key)) keys.push(key);
// Ahem, IE < 9.
if (hasEnumBug) collectNonEnumProps(obj, keys);
return keys;
};
如果传入数字,最后会返回 [].length === 0
。数字被当成了 object object 来判断。
文档里说了传入的是可枚举的对象。lz 可能对这个 API 理解有误。
这个源码不懂,说明基础不是很扎实… 这里面代码几乎没有深奥的逻辑~ 没有打击楼主的意思。一遍可能有些不明白的地方,查查资料,三遍过后还不懂,我负责~
@DevinXian 嗯嗯 确实基础不行 自豪地采用 CNodeJS ionic
@ianchn 谢谢 自豪地采用 CNodeJS ionic
看源码前,先看文档啊,文档里说明了,这个方法用于检查 “可枚举对象”,可枚举对象。。。
@coolcao (>﹏<)好 自豪地采用 CNodeJS ionic
fff