2011-05-31 73 views
2

我不明白函数闭包和匿名函数。我正在试图做的是创建一个运行随机根据骰子掷出的输入的功能的功能:如何将函数作为参数传递多次?

repeat(1,6,foobar()); 

function repeat(numDie, dieType, func){ 
    var total = 0; 
    for (var i=0; i < numDie; i++){ 
     var dieRoll = Math.floor(Math.random()*dieType)+1; 
     total += dieRoll; 
    } 
    for (var x=0; x < total; x++){ 
     func(); 
    } 
} 

我究竟错在这里做什么?我必须将函数存储在变量中才能使用它吗?

+0

不,密切的选民,这个问题是更有可能帮助未来的游客。 – BoltClock 2011-05-31 21:18:55

+0

http://helephant.com/2008/08/19/functions-are-first-class-objects-in-javascript/ – Alxandr 2011-05-31 21:22:50

+0

@Bolt:除了可能有数百个重复;这似乎每天都会出现。 – SLaks 2011-05-31 21:40:11

回答

8

通过写foobar(),你调用foobar并通过其返回值。

删除括号以传递函数而不是调用它。

+1

+1修复*和*原因。 – GolezTrol 2011-05-31 21:28:25

+0

谢谢!这是非常有用的:) – Dasaru 2011-05-31 21:31:29

+0

...如果foobar()带参数呢? – 2012-09-18 16:57:26

6

更改:

重复(1,6,foobar());

repeat(1,6,foobar); 
相关问题