2012-04-07 9 views
0

私は最初に検索で始まり、非常によく似た質問があったと言えますが、私はまだ分かりにくいです。関数をパラメータとして使用すると、

免責事項:宿題のためのロックペーパーはさみゲームを作っていますが、適切なJavaScript関数/パラメータの受け渡しについて簡単に質問しています。

私はopponentRandom()という関数を持っています。これは相手の(コンピュータの)選択肢として無作為化された "rock or paper or scissors"の値を返します。

私は、あなたの値(html文書の "onclick"によって決まる)とopponentRandom()関数の値を比較する別の関数compareChoices()を持っています。ゲームが常駐テーブル内の今

、次のようにテーブルデータの一つが(あなたの写真のいずれかをクリックする方法の例を、みんなを与えるために働くことになっている)である:今

<td onclick="comparisonChoices('paper', 'opponentRandomizer()**;**');"> 
    <img src="paper.jpg" alt="paper" /> 
</td> 

比較の最初のパラメータが選択されているはずです.todのonclick内のcompareChoices関数内のopponentRandom関数を簡単に呼び出すことができれば、本当に好きです。なぜなら、ランダムな結果がcompareChoices関数内で考慮されるからです。

これは機能しますか?呼び出された別の関数の中に関数をパラメータとして投げることは許されていますか? opponentRandom関数は実際にロック、ペーパー、はさみ値、および比較関数のいずれかを返して、勝ったのか、紛失したのか、結んだのかを判断します。私は適切な構文がわからない、あるいは私がこれを行うことができれば、まだ私のHTMLにjavascriptを統合していないし、ゲームに必要なすべての機能を持っているまで、それを実装する簡単な方法はわからない走る。あなたはonclick = "function(param、 'function()');)と呼ばれる別の関数の中に値を返す関数を置くことはできますか? ?

また、太字のセミコロンは私がそこにいるのでしょうか? (編集:**太字として表示されていませんが、私はセミコロンについて話しています** **に囲まれた)

+2

はい、内部関数の戻り値をパラメーターとして渡す関数呼び出しパラメーターに関数を入れることはできますが、引用符を削除する必要があります。これを引用すると、関数呼び出しではなく、文字列 'opponentRandomizer()'が渡されます。 ';'を削除します。 –

+1

'comparisonChoices( 'paper'、opponentRandomizer())' –

+2

JavaScriptは非常に柔軟な言語であり、実際には関数参照を '()'なしで渡すことができますが、あなたの場合はそうではありません。 –

答えて

2

の何が問題なのです:

function comparisonChoices(selection) { 
    other_selection = opponentRandomizer(); 
    etc.... 
} 

+0

ああ、本当です。それについて考えなかった。あなたがしたことを行うのとは対照的に、パラメータを渡すことによって私がやっていることには何か欠点がありますか?ちょっと興味があるんだけど。 –

+1

このメソッドは関数内に埋め込まれているため、opponentrandomizer()のみを呼び出します。これをパラメータとして渡すことで、複数の異なるランダマイザ関数を持つことができ、関数呼び出し時に使用するランダマイザ関数を選択できます。 –

関連する問題