如果您使用诸如 的循环习语_.some()
,但不传入迭代器函数,则出现问题。然而,下划线将用标识函数替换它并继续运行。
这是为什么:来自下划线
var any = _.some = _.any = function(obj, iterator, context) {
iterator || (iterator = _.identity); // this line?
var result = false;
if (obj == null) return result;
if (nativeSome && obj.some === nativeSome) return obj.some(iterator, context);
each(obj, function(value, index, list) {
if (result || (result = iterator.call(context, value, index, list))) return breaker;
});
return !!result;
};
案例使用:
_.some([0,1,2,3], null);