関数を引数として渡す場合、その引数はその関数の戻り値ではなく、関数自体です。好きなだけ、好きな引数で呼び出すことができます。イベント。
いくつかの実用的なユースケースが必要だと言うと、ここに非常に一般的な状況の短いリストがあり、すべて関数を引数として渡す必要があります。
平均的な jQuery コードを見て、関数が引数として渡される回数を数えてみましょう。
$(document).ready(function()//<-- 1
{
$('#foo').on('click',function()//2
{
});
$.each(something,function()//3
{});
//and so on
});
jQuery を使用しない場合は、イベント委任を試してください
document.body.addEventListener('click',function(e)
{
e = e || window.event
console.log('This function was passed as an argument to the addEventListener method');
},false);
または単純なArray.prototype.sort
関数 (/method):
anArray.sort(function(a,b)
{
return (a > b ? 1 : -1);
});
または、その場で新しいオブジェクトを作成する代わりに、ajax 呼び出しを行う必要がある場合はXMLHttpRequest
、xhr オブジェクトを設定し、URL、データ、およびonreadystatechange
コールバックを引数として渡す単一の関数が必要になる場合があります。
function makeXHR(url,data,callback)
{
try
{
var xhr = new XMLHttpRequest();
}
catch(e)
{
//etc...
}
xhr.onreadystatechange = callback;
}
makeXHR('some/url','foo=bar',function()
{
if (this.readyState === 4 && this.status === 200)
{
//do stuff
}
});
これらの例のすべてで、関数をインラインで作成しました。もちろん、関数の参照 (名前を渡すだけ) も問題なく機能します。
makeXHR('some/url','foo=bar',defaultXhrCallback);
これらは、関数を引数として別の関数に渡すことができる/渡す必要がある数千のユースケースのほんの一部です