在JS中,如何将函数传递回另一个要评估的函数

时间:2013-12-30 13:44:55

标签: javascript

我甚至不确定如何提出这个问题。

在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'是卡路里,我想传回一个调用函数的公式,以根据其变量进行评估。

这可能吗?

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

3 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:1)

这对你有用吗?

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

这样,您可以删除多个if-else分支。

答案 2 :(得分:0)

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

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