结束和关闭?

时间:2015-12-02 20:14:28

标签: javascript

我无法理解此代码的行为。 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);

1 个答案:

答案 0 :(得分:-2)

我不完全确定你在问什么,但我想你在问为什么当你把字母推入数组时,它们会显示为数字。

如果要将字符串推送到该数组,请将其包装在引号中,以便编译器知道您希望将字母存储为字符串,而不是其等效数字。通常,不需要在Javascript中输入值,但如果您使用的是混合数组,则需要让编译器知道您希望它保持为字符串。

例如,

var curryC = curryN(abc)

应该是

var curryC = curryN("abc")

如果这完全不符合您的要求,请说明您想要的输出。