Javascript 如何编写JS函数,如操作数(运算符(操作数))?

Javascript 如何编写JS函数,如操作数(运算符(操作数))?,javascript,Javascript,我似乎无法理解在JavaScript中编写一个类似于8(乘以(5))的函数的逻辑 例如: 8次(五次)应返回40 three(加上(两))应返回5 这是一个代码战问题。它为看起来像“八(){}”的数字0-9提供了空函数,也为看起来像“时间(){}”的运算符提供了空函数。解决方案应该是执行“八(加(三))”将返回11,等等。您可以使用一个函数,该函数返回一个值或一个具有实际值的函数调用。然后您需要为操作数指定一个函数,该函数在函数上为值重新执行闭包 功能八(fn){ 返回类型fn==‘函数’

我似乎无法理解在JavaScript中编写一个类似于
8(乘以(5))
的函数的逻辑

例如:

  • 8次(五次)
    应返回40
  • three(加上(两))
    应返回5

这是一个代码战问题。它为看起来像“八(){}”的数字0-9提供了空函数,也为看起来像“时间(){}”的运算符提供了空函数。解决方案应该是执行“八(加(三))”将返回11,等等。

您可以使用一个函数,该函数返回一个值或一个具有实际值的函数调用。然后您需要为操作数指定一个函数,该函数在函数上为值重新执行闭包

功能八(fn){
返回类型fn==‘函数’?fn(8):8;
}
功能时间(fn){
返回函数(op){
返回fn()*op;
};
}

console.log(八次)您可以使用一个函数,该函数返回一个值或带有实际值的函数调用。然后您需要为操作数指定一个函数,该函数在函数上为值重新执行闭包

功能八(fn){
返回类型fn==‘函数’?fn(8):8;
}
功能时间(fn){
返回函数(op){
返回fn()*op;
};
}

console.log(八次)我知道这个问题在我写这个回复的时候得到了回答……但无论如何我都会把它贴出来

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

我知道这个问题在我写这个回复的时候得到了回答…但无论如何我都会把它贴出来

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

上述情况的一个问题是假设fn是一个函数;如果一个人写了八(八)个,会发生什么?@ChrisCousins,实际上您得到了一个错误
预期的函数
。你想得到什么?@ChrisCousins我在上面的评论中提到(实际上与这个问题有关),最内部的引用也应该是一个函数调用,它解决了这个问题。这是一个相当疯狂的DSL虽然考虑到如何。。。许多的数字。。。有;)@达文尼顿,这是什么DSL@NinaScholz领域特定语言。这是一种有限的数学语言,上面的问题是它假设fn是一个函数;如果一个人写了八(八)个,会发生什么?@ChrisCousins,实际上您得到了一个错误
预期的函数
。你想得到什么?@ChrisCousins我在上面的评论中提到(实际上与这个问题有关),最内部的引用也应该是一个函数调用,它解决了这个问题。这是一个相当疯狂的DSL虽然考虑到如何。。。许多的数字。。。有;)@达文尼顿,这是什么DSL@NinaScholz领域特定语言。这里是一个有限的数学语言。评论仅供澄清。如果你将要发表的评论与此无关,请克制。阅读评论仅用于澄清。如果你将要发表的评论与此无关,请克制。阅读您可以在
forEach
回调中使用第二个参数,而不是
num
变量您可以在
forEach
回调中使用第二个参数,而不是
num
变量