相关疑难解决方法(0)

如何在JavaScript中正确地理解函数?

curry在JavaScript中编写了一个简单的函数,可以在大多数情况下正常工作

const add = curry((a, b, c) => a + b + c);

const add2 = add(2);

const add5 = add2(3);

console.log(add5(5));
Run Code Online (Sandbox Code Playgroud)
<script>
const curried = Symbol("curried");

Object.defineProperty(curry, curried, { value: true });

function curry(functor, ...initArgs) {
    if (arguments.length === 0) return curry;

    if (typeof functor !== "function") {
        const value = JSON.stringify(functor);
        throw new TypeError(`${value} is not a function`);
    }

    if (functor[curried] || initArgs.length >= functor.length)
        return functor(...initArgs);

    const result = (...restArgs) => curry(functor, ...initArgs, ...restArgs);

    return …
Run Code Online (Sandbox Code Playgroud)

javascript haskell lambda-calculus currying partial-application

10
推荐指数
2
解决办法
3461
查看次数

如何在闭包中乘以数字

如何实现用于乘以任意数量的数字的锁定功能。

调用示例:

multiply(1)(2)(3)(4)(5) // 120
Run Code Online (Sandbox Code Playgroud)

为了完成这个任务,需要重新定义toString内部函数的方法,该方法应该返回累积结果,但我有结果NaN

multiply(1)(2)(3)(4)(5) // 120
Run Code Online (Sandbox Code Playgroud)

javascript closures

4
推荐指数
1
解决办法
1330
查看次数