有什么类似于返回函数的东西吗
Is there anything like return a function?
我有一个要求,我可以获得锚标记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)
{
// ...
}
相关文章:
- 基于窗口宽度jquery的函数的替代方法是什么
- 如果在构造函数中有“返回”,则在 JavaScript 中的新运算符中做了什么
- 未捕获的类型错误:topFrame.window.changeSelectedBarStyle不是函数,原因是什么
- 什么'这是从第三个函数上的async 1st函数获得结果的更好方法
- 在递归生成器函数中,yield后面的*(星号/星号)语法意味着什么
- 在什么情况下需要同时使用compile&链接函数的角度
- 当一个重要的构造函数参数丢失时应该发生什么
- 当绑定到AngularJS中的函数时,会在后台发生什么
- 缓存!saveLocations()和addLocation()函数有什么区别
- 函数(i,val)在javascript中是什么意思
- 鉴于 for..在构造中,库提供的函数(如 jQuery.map() 或 _.each())有什么用
- 如果 JS 中的函数是一流的,那么在定义它们之前允许调用它们是什么
- undercore.js_.tap()函数什么是方法链
- 淘汰抛出消息:类型错误:
不是一个函数.什么意思 - JavaScript 函数什么是范围以及为什么使用 $
- jQueryAJAX函数什么都没做
- 用".then"链接bluebird中的异步函数.什么是最好的方法
- 为什么这个函数什么也不返回?
- 将参数传递给函数.什么'It’他错了
- 我有节点JS错误的日期函数什么地方出了问题