首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Currying和closure?

Currying和closure?
EN

Stack Overflow用户
提问于 2015-12-03 04:14:28
回答 1查看 79关注 0票数 0

我在理解这段代码的行为时遇到了问题。num参数和array参数的行为似乎不同,我不确定是什么导致了这种情况。因此,num参数跟踪curry函数被调用的次数,您可以返回curry链,它将保留正确的num,并允许您使用新的输入沿curry链返回。我认为数组的作用是一样的,但数组不断累积输入,我不确定是什么导致了它,就像num一样,我绑定了它的当前值,就像我使用num一样。

代码语言:javascript
复制
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);
EN

回答 1

Stack Overflow用户

发布于 2015-12-03 04:41:09

我不完全确定你在问什么,但我想你是在问为什么当你把字母推入数组时,它们会以数字的形式出现。

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

例如,

代码语言:javascript
复制
var curryC = curryN(abc)

应该是

代码语言:javascript
复制
var curryC = curryN("abc")

如果这完全不是你想要的,那么请解释你想要的输出是什么。

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34052161

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档