有什么类似于返回函数的东西吗

Is there anything like return a function?

本文关键字:函数 什么 类似于 返回      更新时间:2023-09-26

我有一个要求,我可以获得锚标记id,并根据id确定执行哪个函数。。那么在代码下面有什么套件吗

function treeItemClickHandler(id)
{
 a=findDisplay(id);
 a();
}

您可以将函数分配给变量,如下所示:您还可以从函数返回函数指针-请参阅findDisplay(id)的return语句。

function treeItemClickHandler(id)
{
 var a= findDisplay;
 var other = a(id);
 other();
}
function findDisplay(id)
{
   return someOtherThing;
}
function someOtherThing()
{
}

当然,函数是JavaScript中的第一类对象。例如,您可以创建一个映射(一个对象),其中包含对要调用的函数的引用:

var funcs = {
   'id1': function(){...},
   'id2': function(){...},
   ...
};
function treeItemClickHandler(id) {
    if(id in funcs) {
        funcs[id]();
    }
}

由于函数被视为任何其他值,您也可以从另一个函数返回它们:

function findDisplay(id) {
    // whatever logic here
    var func = function() {};
    return func;
}

函数是普通的javascript值,因此您可以将它们传递,(重新)分配给变量,并将它们用作函数的参数值或返回值。只需使用它们;)到目前为止,您的代码是正确的。

您可以通过多种方式在要调用的id和函数之间进行映射。

其中一个更简单的方法是创建一个将id映射到函数的对象,并从该对象中找到要调用的函数(这本质上是一个外观更好的switch语句)。

示例:

function treeItemClickHandler(id)
{
    var idMap = {
        "some-id": findDisplay,
        "another-id": doSomethingElse
    };
    if (!idMap.hasOwnProperty(id)) {
        alert("Unknown id -- how to handle it?");
        return;
    }
    // Call the corresponding function, passing the id
    // This is necessary if multiple ids get handled by the same func
    (idMap[id])(id); 
}
function findDisplay(id)
{
    // ...
}
function doSomethingElse(id)
{
    // ...
}