関数参照と呼び出し(呼び出し)を区別する必要があります。イベントハンドラーまたはコールバックを関連付ける場合、適切なタイミングで呼び出される関数参照が必要です。引数を渡して関数参照に追加(..)
(またはnullary )すると、それが呼び出されます。バインド中にこれを行うと、関数はバインド時に呼び出され、参照をバインドするのではなく、関数の出力がバインドされます(これにより、通常予想される後の呼び出しが可能になります)。()
次のように両方のバインディングを変更する必要があります。
$(document).ready(doBind); //Now a reference to that function
function doBind() {
$('#choice').change(function() { myAlert('Choice has been changed!');});
//New anonymous function reference which allows for arguments and is conventionally used
}
function myAlert($msg) {
alert($msg);
}
構文との使用法の違いを強調するためのいくつかの簡単な例()
。
以下の関数は関数参照を取ります。引数として、それを内部で実行します(基本的にハンドラーとコールバックの仕組み)。
functionWrapper = function(funk) {
//Do something else
funk()
}
現在人気のある無名関数宣言とそれに続く即時呼び出し:関数が書き込まれることが多くfunction() {...}()
、新しく作成された関数への参照が、提供された引数を使用して即座に呼び出されます(JavaScriptでスコープを強制するのに役立ちます)。どちらの場合も引数は関数のパラメーターとして使用できるため、呼び出しに含まれるものはすべて(..)
、で宣言されるものにマップされますfunction(..)
が、参照と呼び出しに焦点を当てることが質問の主な問題です。