var createAssigner = function(keysFunc, undefinedOnly) {
return function(obj) {
var length = arguments.length;
if (length < 2 || obj == null) return obj;
for (var index = 1; index < length; index++) {
var source = arguments[index],
keys = keysFunc(source),
l = keys.length; //为什么这里要是1=keys.length??这样写是个什么意思?
for (var i = 0; i < l; i++) {
var key = keys[i];
if (!undefinedOnly || obj[key] === void 0) obj[key] = source[key];
}
}
return obj;
};
};
注意是l,表示length或者len,而不是你写的1.
这个源码之前有人解读过,我看过笔记,可参考 hanzichi - 内部方法 createAssigner 详解 https://github.com/hanzichi/underscore-analysis/issues/4