2013-03-27 75 views
1

请考虑此javascript:传递函数不计算

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

a("hello"); 

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

我如何得到它在第二次调用返回的“世界”?现在它将整个函数作为一个字符串返回。

回答

2

只需执行函数表达式,它会返回world和将要传递给a功能

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

DEMO

+0

而其他的答案是正确的,这一个打钉撞在墙上。 – Boaz 2013-03-27 21:05:20

1

您需要调用的函数,不仅仅是指它:

alert(arg1()); 

如果您需要a应对被称为有一个字符串或一个功能,你需要检查的类型与typeof的争论,并以不同的方式处理它们。

1

随着第二呼叫arg1是一个函数。

为了让您有执行功能结果:

alert(arg1());