Qiitaにて、コールバック関数について調べていたのですが、下記のコードについて疑問な点があり、ご助言頂きたいです。
/* --- 変数・関数定義 --- */ var $div = $('#js-div'); var a = function(callback) { setTimeout(function() { $div.addClass('is-right'); callback(); }, 500); }; var b = function(callback) { setTimeout(function() { $div.addClass('is-top'); callback(); }, 500); }; var c = function(callback) { setTimeout(function() { $div.addClass('is-red'); callback(); }, 500); }; var end = function() { setTimeout(function() { $div.addClass('is-hide'); }, 500); }; /* 呼び出し */ a(b.bind(null, c.bind(null, end.bind(null))));
2点あるのですが、まず関数の実行順序としてはa()が呼び出され500ミリ秒後のb()、その500ミリ秒後にc(),500ミリ秒後にend()といった形でまずa()が実行され「$div.addClass('is-right');」が呼び出され、callback()が実行され、b()が実行されていくといった形で上から順に実行されていくのでしょうか?
また、呼び出しの部分で、「null」を記載しているのですが、a()の中にb()といった形で関数を引数にとっているにも関わらず、別途nullを引数にしてしなければならないのはなぜなのでしょうか?
上記2点につきまして、アドバイス頂けましたら幸いです。