我遇到了一个不稳定的情况,即在a上使用_.curry
的函数正在立即调用该函数。在阅读了lodash文档之后,我们发现我们需要声明arity,这要归功于写得很好的文档:
如果func.length不够,可以指定func的arity。
但是,我很好奇是否有人知道为什么会发生这种情况的实际例子(不一定是我的代码库中发生的具体原因)。
答案 0 :(得分:1)
但是,我很好奇是否有人知道为什么会发生这种情况的实际例子(不一定是我的代码库中发生的具体原因)。
示例:
arguments
对象而不是形式参数:
function sum() {
var total = 0;
for (var i = 0; i < arguments.length; i += 1) {
total += arguments[i];
}
return total;
}
console.log('length', sum.length); // 0
console.log('result', sum(3, 4));
&#13;
function sum(...values) {
return values.reduce((a, v) => a + v, 0);
}
console.log('length', sum.length); // 0
console.log('result', sum(3, 4));
&#13;
function add(x, y) { return x + y; }
var inc = _.partial(add, 1);
console.log('add length', add.length); // 2
console.log('inc length', inc.length); // 0
console.log('result', inc(8));
var squarePlusOne = _.flow(x => x * x, x => x + 1);
console.log('length', squarePlusOne.length); // 0
console.log('result', squarePlusOne(7));
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.5/lodash.min.js"></script>
&#13;
function combine(x, y, z) {
return x + y + (z || 0);
}
console.log('length', combine.length); // 3
console.log('result', combine(3, 4));
&#13;