传递函数不评估

时间:2013-03-27 21:01:19

标签: javascript function

请考虑这个javascript:

var a = function(arg1) {
    alert(arg1);
}

a("hello");

a(function() { return "world"; });

如何让它在第二次通话中返回“世界”?现在它将整个函数作为字符串返回。

3 个答案:

答案 0 :(得分:2)

只需执行函数表达式,它将返回world并将传递给a函数

a((function() { return "world"; })());

DEMO

答案 1 :(得分:1)

您需要调用该函数,而不仅仅是引用它:

alert(arg1());

如果您需要处理使用字符串或函数调用的a,则需要使用typeof检查参数的类型并以不同方式处理它们。

答案 2 :(得分:1)

第二次通话arg1是一个功能。

要获得结果,您必须执行以下功能:

alert(arg1());