首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何编写像operand(操作符(Operand))这样的JS函数?

如何编写像operand(操作符(Operand))这样的JS函数?
EN

Stack Overflow用户
提问于 2018-08-31 16:14:05
回答 2查看 78关注 0票数 0

我似乎无法理解编写类似于eight(times(five)) in JavaScript的函数的逻辑。

示例:

  • eight(times(five))应返回40
  • three(plus(two))应该返回5

这是个代码战争的问题。它为类似于“8( ){ }”的数字0-9提供了空函数,为类似于“time( ){ }”的运算符提供了空函数。解决方案应该是执行“8(+(3))”将返回11,等等。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-31 16:24:28

您可以使用一个函数,该函数可以返回带有实际值的值或函数调用。然后,您需要一个操作数的函数,该操作数对该值的函数重新运行闭包。

代码语言:javascript
复制
function eight(fn) {
    return typeof fn === 'function' ? fn(8) : 8;
}

function times(fn) {
    return function (op) {
        return fn() * op;
    };
}

console.log(eight(times(eight)));

票数 2
EN

Stack Overflow用户

发布于 2018-08-31 16:34:44

我知道这个问题在我写这个reply...but的时候被回答了,我无论如何都会把它发出去。

代码语言:javascript
复制
function times(fn) {
    return function (op) {
        return fn() * op;
    };
}
function plus(fn) {
    return function (op) {
        return fn() + op;
    };
}
function minus(fn) {
    return function (op) {
        return fn() - op;
    };
};
createNumbers = () => {
    var num = 0;
    ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine'].forEach((number) => {
        let val = num;
        window[number] = (fn) => {
            return fn ? fn(val) : val;
        };
        num++;
    });
};
createNumbers();
three(times(five)); // 15
eight(plus(two));// 10
etc
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52119313

复制
相关文章

相似问题

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