【发布时间】:2016-07-11 05:28:05
【问题描述】:
在使用 lodash (v4.6.1) 时遇到了一个奇怪的情况,我将 _.padStart 的 _.partialRight 函数传递给 _.map 回调并得到 bum 结果。
复制:
_.padStart("0", 2, "0");
// "00"
var f = _.partialRight(_.padStart, 2, "0");
f("0");
// "00"
_.map(["0"], function(s) { return f(s); });
// ["00"]
_.map(["0"], f);
// ["0"]
在深入了解执行此操作的 lodash 代码之后,我们来到这里:
function arrayMap(array, iteratee) {
var index = -1,
length = array.length,
result = Array(length);
while (++index < length) {
result[index] = iteratee(array[index], index, array);
}
return result;
}
此时iteratee 就是上面声明的f 函数。在不深入研究代码的情况下,我只能假设从_.partialRight 添加的参数被附加在该函数调用的任何和所有参数之后。
现在我们进入问题部分。这是 lodash 的错误/限制还是有更好的方法来做到这一点?
【问题讨论】:
标签: javascript functional-programming lodash partial-application