我无法理解此代码的行为。 num参数和数组参数似乎表现不同,我不确定是什么导致它。因此,num参数会跟踪调用curried函数的次数,并且您可以返回咖喱链并保留正确的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);
答案 0 :(得分:-2)
我不完全确定你在问什么,但我想你在问为什么当你把字母推入数组时,它们会显示为数字。
如果要将字符串推送到该数组,请将其包装在引号中,以便编译器知道您希望将字母存储为字符串,而不是其等效数字。通常,不需要在Javascript中输入值,但如果您使用的是混合数组,则需要让编译器知道您希望它保持为字符串。
例如,
var curryC = curryN(abc)
应该是
var curryC = curryN("abc")
如果这完全不符合您的要求,请说明您想要的输出。