Javascript 在JS中,如何将一个函数传递回另一个要求值的函数

Javascript 在JS中,如何将一个函数传递回另一个要求值的函数,javascript,Javascript,我甚至不知道该怎么问这个问题 在Javascript中,我想调用一个函数来确定度量中要包含哪些单位,但是,如果度量是某个单位,我想将计算返回给调用函数,让它进行计算 简单地说,我使用度量名称调用函数“Unit” unit(details) 其中的细节是,例如,“卡路里” 单位功能简单地说是: function unit(measure) { if ( measure == "cadence" ) { return " rpm "; }; if ( mea

我甚至不知道该怎么问这个问题

在Javascript中,我想调用一个函数来确定度量中要包含哪些单位,但是,如果度量是某个单位,我想将计算返回给调用函数,让它进行计算

简单地说,我使用度量名称调用函数“Unit”

unit(details)
其中的细节是,例如,“卡路里”

单位功能简单地说是:

    function unit(measure) {
        if ( measure == "cadence" ) { return " rpm "; };
        if ( measure == "calories" ) { return " calories " + " ( " + Math.round( 4.184 * function(){event[key][details]} ) + " kJ )"; };
        ...
        ...
    }
如果“measure”是carries,我想传回一个公式,让调用函数根据其变量进行计算

if(measure === "calories") {
    return function(key, details) {
        return "Calories (" + Math.round(4.184 * event[key][details] + "kJ)"
    }
}
这可能吗


如果这是一个简单的问题,我只是错过了它,我深表歉意。

必须在return关键字之后直接声明匿名函数

function unit(measure) {
    if ( measure == "cadence" ) { return " rpm "; };
    if ( measure == "calories" ) { return function(){
        //calculation goes here
    }}
}

由于函数是JS中的第一类构造,所以可以将函数作为普通变量返回

if(measure === "calories") {
    return function(key, details) {
        return "Calories (" + Math.round(4.184 * event[key][details] + "kJ)"
    }
}

那对你有用吗

function unit(measure) {
    var measurements = {
        cadence: {
            value: "rpm"
            formula: null
        },
        calories: {
            value: "calories",
            formula: function() {
                return Calories(....);
            }
        }
    };
    return measurements[measure];
};

通过这种方式,您可以删除多个if-else分支。

可能重复您的错误,@Cerbrus,因为这不是将函数作为参数传递,而是从另一个函数返回函数。啊,是的。是的,谢谢你的快速回复。我喜欢这种方法,但我仍然只是将返回的函数作为文本,而不是进行计算。卡路里:166卡路里函数(){return“carries”(+Math.round(4.184*event[key][details])+“kJ)”;}@colster:您是否在其他地方定义了卡路里函数。如果是,那么您只需调用函数而不使用字符串,如下所示:returncarries(Math.round(4.184*event[key][details])+“KJ”);'Carries’不是一个函数,它只是文本字符串“Carries”(“+…”)的第一部分,我可以取回该函数并将其分配给一个变量。例如,temp=function(){return”carries…等等,temp被识别为一个函数类型,但我无法对其进行计算。