BLOG

コールバック関数について

コールバック関数についてメモ

コールバック関数とは

他の関数に引数として渡される関数


function hello(){
    console.log('hello');
}

function fn(cb){// 2.cbにhelloが渡ってくる
    cb();// 3.ここで実行される
}

fn(hello);// 1.引数にhelloを渡す


hello



function hello(name){//2.引数にnameを与える
    console.log('hello ' + name);//3.nameを加える
}

function fn(cb){
    cb('Taro');//1.文字列を引数に与えると関数helloには'Taro'が渡ってくる
}

fn(hello);
fn(thanks);


hello Taro

下記のようにjsの関数は宣言時の仮引数と(thanks()のような)、呼び出すときの実引数の数は一致している必要はないのでcb(‘Taro’)のように呼び出してもエラーにならない


function thanks(){
    console.log('thanks');
}
function fn(cb){
    cb('Taro');
}
fn(thanks);



thanks

無名関数を使用した場合


function fn(cb){
    cb('Taro');
}
fn(function(name){
    console.log('hey ' + name );
})


hey Taro

実例


function hello(name){
    console.log('hello ' + name);
}

function thanks(){
    console.log('thanks');
}
setTimeout(thanks, 2000);
setTimeout(hello, 2000);



thanks
hello undefined

setTimeoutにhelloを渡して実行した際、consoleはhello undefinedになる
理由はsetTimeoutではコールバックを呼ぶ際に実引数を渡して実行していない為、hello(name)の仮引数に値が渡ってこないから。