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;
};
};
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
注意是l,表示length或者len,而不是你写的1.
这个源码之前有人解读过,我看过笔记,可参考 hanzichi - 内部方法 createAssigner 详解 https://github.com/hanzichi/underscore-analysis/issues/4
你的结合他的用法来看啊,直接给个函数定义耍流氓啊,看了下面有一个