0

関数をonclickに動的に割り当てる場合、次の2つの違いは何ですか。

1...

button.onclick=function(){funct(this.value)};

2...

button.onclick=funct(this.value);

function は他の関数です。

これら2つは同等ですか?

4

3 に答える 3

4

依存します。

funct(this.value)が何かを行い、ボタンがクリックされたときに何かを実行したい場合は、#1 が必要です。

関数をfunct(this.value) 返し、ボタンがクリックされたときにその関数を実行する場合は、#2 が必要です。

于 2013-07-06T18:07:22.220 に答える
3

いいえ、当然のことながら、2 つの異なるものは同じではありません。

button.onclick=funct(this.value);

ここでは、への呼び出しfunctがすぐに評価されます。

button.onclick=function(){funct(this.value)};

ここでは、ボタンのハンドラーが呼び出されるfunctまで の呼び出しが延期されます。onclick

ここでの重要な違いは、2 番目のケース (私の投稿では、あなたの最初の投稿) では新しい関数を に割り当てていますがonclick、最初のケースでは を呼び出した結果を割り当てていることですfunct

これは、それらが呼び出されたときの値thisにも影響を与えます。value

于 2013-07-06T18:07:17.417 に答える
0

onclick秒の例では、関数を呼び出し、関数の結果をハンドラーに割り当てます (したがって、関数は関数を返す必要があります)。

最初の関数は、ボタンがクリックされたときに関数を呼び出します。

于 2013-07-06T18:05:54.530 に答える