関数をonclickに動的に割り当てる場合、次の2つの違いは何ですか。
1...
button.onclick=function(){funct(this.value)};
2...
button.onclick=funct(this.value);
function は他の関数です。
これら2つは同等ですか?
関数をonclickに動的に割り当てる場合、次の2つの違いは何ですか。
1...
button.onclick=function(){funct(this.value)};
2...
button.onclick=funct(this.value);
function は他の関数です。
これら2つは同等ですか?
依存します。
funct(this.value)
が何かを行い、ボタンがクリックされたときに何かを実行したい場合は、#1 が必要です。
関数をfunct(this.value)
返し、ボタンがクリックされたときにその関数を実行する場合は、#2 が必要です。
いいえ、当然のことながら、2 つの異なるものは同じではありません。
button.onclick=funct(this.value);
ここでは、への呼び出しfunct
がすぐに評価されます。
button.onclick=function(){funct(this.value)};
ここでは、ボタンのハンドラーが呼び出されるfunct
まで の呼び出しが延期されます。onclick
ここでの重要な違いは、2 番目のケース (私の投稿では、あなたの最初の投稿) では新しい関数を に割り当てていますがonclick
、最初のケースでは を呼び出した結果を割り当てていることですfunct
。
これは、それらが呼び出されたときの値this
にも影響を与えます。value
onclick
秒の例では、関数を呼び出し、関数の結果をハンドラーに割り当てます (したがって、関数は関数を返す必要があります)。
最初の関数は、ボタンがクリックされたときに関数を呼び出します。