jsコールバック関数の詳細
1698 ワード
コールバック関数は何ですか?
コールバック関数とは、関数ポインタを介して呼び出される関数です.関数のポインタ(アドレス)をパラメータとして別の関数に渡すと、このポインタが指している関数を呼び出すために使われると、これはコールバック関数と言います.コールバック関数は、この関数の実現者によって直接呼び出されるのではなく、特定のイベントまたは条件が発生したときに、他の当事者によって呼び出され、このイベントまたは条件に応答するために使用される.
JavaScriptでは、コールバック関数は、パラメータ(関数参照)として関数Aを別の関数Bに伝達し、この関数Bが関数Aを実行するという具体的な定義があります.関数Aをコールバック関数と呼びます.名前(関数式)がない場合は、匿名のコールバック関数と呼びます.
いずれも変数として破壊関数を別の関数に渡すことができます.この破損関数はその関数を含むある時点で実行されます.このコールバック関数はその関数を含めて定義されているようです.これは,コールバック関数が本質的にクローズドであることを意味する.
私たちが知っているように、クローズドはその関数を含むスコープに入ることができ、したがって、コールバック関数はその関数に含まれる変数、およびグローバルスコープにおける変数を取得することができる.
コールバック関数がthisオブジェクトの方法である場合、コールバック関数を実行する方法を変更して、thisオブジェクトのコンテキストを保証しなければなりません.さもないと、コールバック関数が大域関数に渡されると、thisオブジェクトは大域windowオブジェクト(ブラウザで)を指します.方法を含むオブジェクトを指します.
長所
1. コードの重複を避ける.
2.汎用的な論理を抽象化することができます.
3.強化コードの維持性と可読性.
4.専任の関数を分離します.
使用シーン
1.非同期呼び出し(例えば、ファイルの読み込み、HTTP要求など).
2.イベント傍受処理.
3.setTimeoutとsetInterval
4.汎用機能、論理を簡略化する
コールバック関数とは、関数ポインタを介して呼び出される関数です.関数のポインタ(アドレス)をパラメータとして別の関数に渡すと、このポインタが指している関数を呼び出すために使われると、これはコールバック関数と言います.コールバック関数は、この関数の実現者によって直接呼び出されるのではなく、特定のイベントまたは条件が発生したときに、他の当事者によって呼び出され、このイベントまたは条件に応答するために使用される.
JavaScriptでは、コールバック関数は、パラメータ(関数参照)として関数Aを別の関数Bに伝達し、この関数Bが関数Aを実行するという具体的な定義があります.関数Aをコールバック関数と呼びます.名前(関数式)がない場合は、匿名のコールバック関数と呼びます.
function foo(fn){
fn();
}
function bar(){
alert('good');
}
foo(bar);
したがって、calbackは必ずしも同期には使用されません.一般的に非同期のシーンでも、イベントをクリックするなど、フィードバックがよく使われます.var dom = document.getElementById(id);
dom.addEventListener('click',function(){
console.log(' ')
});
コールバック関数はクローズドです.いずれも変数として破壊関数を別の関数に渡すことができます.この破損関数はその関数を含むある時点で実行されます.このコールバック関数はその関数を含めて定義されているようです.これは,コールバック関数が本質的にクローズドであることを意味する.
私たちが知っているように、クローズドはその関数を含むスコープに入ることができ、したがって、コールバック関数はその関数に含まれる変数、およびグローバルスコープにおける変数を取得することができる.
function onload(){
var nm = 'onload';
var dom = document.getElementById(id);
dom.addEventListener('click',function(){
console.log(nm)
});
}
onload();
チューニング関数にthisをバインドします.コールバック関数がthisオブジェクトの方法である場合、コールバック関数を実行する方法を変更して、thisオブジェクトのコンテキストを保証しなければなりません.さもないと、コールバック関数が大域関数に渡されると、thisオブジェクトは大域windowオブジェクト(ブラウザで)を指します.方法を含むオブジェクトを指します.
var obj = {
nm:'obj'
}
function foo(fn,fnObj){
fn.apply(fnObj);
}
function bar(){
console.log(this.nm)
};
foo(bar,obj);
コールバック関数の利点と使用シーン長所
1. コードの重複を避ける.
2.汎用的な論理を抽象化することができます.
3.強化コードの維持性と可読性.
4.専任の関数を分離します.
使用シーン
1.非同期呼び出し(例えば、ファイルの読み込み、HTTP要求など).
2.イベント傍受処理.
3.setTimeoutとsetInterval
4.汎用機能、論理を簡略化する