2011-05-31 14 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

+0

http://helephant.com/2008/08/19/functions-are-first-class-objects-in-javascript/ – Alxandr

+0

@Bolt:おそらく何百もの重複があります。これは毎日起きているようだ。 – SLaks

答えて

8

に、あなたはfoobarを呼び出し、その戻り値を渡します。

関数を呼び出す代わりにかっこを削除して渡します。

+1

+1修正*と*その理由。 – GolezTrol

+0

ありがとうございます!これは非常に役に立ちました:) – Dasaru

+0

... foobar()がパラメータを取るとどうなりますか? –

6

変更:

繰り返し(1,6、foobarに());

foobar()を書き込むことにより

repeat(1,6,foobar); 
関連する問題