JQuery の W3Schools サンプルからこのコード ブロックがあります。W3Schools で試してみてください。hide メソッド呼び出しにコールバックを 1 つだけ追加しました。
最初のケース
<!DOCTYPE html> <html> <head> <script src="jquery.js"></script> <script> function sayHello(){ alert('hello sit'); }
$(document).ready(function(){ $("button").click(function(){
$("p").hide(100,sayHello); }); });
</script> </head> <body> <button>Hide</button> <p>This is a paragraph with little content.</p> <p>This is another small paragraph.</p> </body> </html>
2番目のケースは
<!DOCTYPE html> <html> <head> <script src="jquery.js"></script> <script> function sayHello(){ alert('hello sit'); }
$(document).ready(function(){ $("button").click(function(){
$("p").hide(100,sayHello()); }); });
</script> </head> <body> <button>Hide</button> <p>This is a paragraph with little content.</p> <p>This is another small paragraph.</p> </body> </html>
両方の唯一の違いは、コールバック関数を中かっこの有無にかかわらず渡すことです。
最初のケースでは、非表示ボタンをクリックすると、hello アラートが 2 回表示されます。2 番目のケースでは、hello アラートが 1 回だけ表示されます。ゼロ引数関数が中かっこの有無にかかわらず呼び出されることは問題ではないため、両方の場合でアラートが1回だけ来ることを期待しています。
関数名が中括弧なしで渡されると、コールバック関数が 2 回呼び出される理由を理解したいと思います。