2017-02-23 16 views
0

JavaScriptを学び、コールバックについてより明確にしたいと考えました。次のコードでコールバック機能付き

function do_a(callback){ 
    // if callback exist execute it 
    callback && callback(); 
} 

function do_b(){ 
    console.log('do_b executed'); 
} 
//one way 
do_a(function(){ 
    do_b(); 
}); 

//other way 
do_a(do_b); 

はdo_a()が呼び出された二つの方法の間に差があります。 1つはdo_b関数へのポインタを渡し、もう1つはdo_b関数を実行する関数を渡します。私が見たすべての例は、最初の方法を使用しています。それはもっと賢明なスタイルですか?

+0

の両方が機能していないが、もちろんもう一つは、この例では –

+1

簡単です、ない - 潜在的に、より複雑なコードで - それはこの 'の上にあなたが望むどのくらいのコントロールに本当に依存'。 –

+0

コールバックに集中するのではなく、コールバックを置き換えてコードを読みやすくすることができる 'Promise'にもっと焦点を当てるべきでしょう。 – baao

答えて

3

第1の方法は、第2の関数を呼び出す追加の無名関数を作成するだけです。これは、コールバックを呼び出す前後にアクションを実行する場合などに便利です。

do_a(function(){ 
    console.log("I'm going to call the second function..."); 
    do_b(); 
    console.log("Second function is done."); 
}); 

そうでなければ、私はこの余分な機能には何の点も見当たりませんし、2番目の方法が優れています。

0

あなたは引数として渡す必要はありません。それを直接呼びます。

function abc(){ 
 
a = "function abc"; 
 
console.log(a); 
 
cde(); 
 
console.log(a); 
 
} 
 
function cde(){ 
 
a="function cde"; 
 
} 
 

 
abc();

関連する問題