我在理解这段代码的行为时遇到了问题。num参数和array参数的行为似乎不同,我不确定是什么导致了这种情况。因此,num参数跟踪curry函数被调用的次数,您可以返回curry链,它将保留正确的num,并允许您使用新的输入沿curry链返回。我认为数组的作用是一样的,但数组不断累积输入,我不确定是什么导致了它,就像num一样,我绑定了它的当前值,就像我使用num一样。
function curryN(fn, n) {
n = n || fn.length;
return function curried(num, array, input) {
console.log(array);
num = num || n;
array.push(input);
num--;
console.log(num);
while (num >= 1) {
return curried.bind(this, num, array)
}
var tempArray = array;
return fn.apply(this, tempArray)
}.bind(this, n, [])
}
function abc(one, two, three) {
return one/two/three;
}
var curryC = curryN(abc),
curryB = curryC(81),
curryA = curryB(9);发布于 2015-12-03 04:41:09
我不完全确定你在问什么,但我想你是在问为什么当你把字母推入数组时,它们会以数字的形式出现。
如果您要将字符串推入该数组,请将其括在引号中,以便编译器知道您希望将字母存储为字符串,而不是与其等效的数字。通常情况下,值不需要在Javascript中输入,但如果您使用的是混合数组,则需要让编译器知道您希望它保持为字符串。
例如,
var curryC = curryN(abc)应该是
var curryC = curryN("abc")如果这完全不是你想要的,那么请解释你想要的输出是什么。
https://stackoverflow.com/questions/34052161
复制相似问题