2017-11-12 14 views
-1

内の関数を呼び出す:Javascriptを私はこのコードの実行を作る方法を把握しようとしています第二の機能として</p> <p>をコールバックを持つ関数を記述しようとしている機能

function a() { 
    console.log('this ran') 
    function firstCB() { 
     console.log('now this ran') 
    } 
} 

私はこの機能を単に呼び出して実行しようとしていますa()

firstCB()this ranのみが表示されているように見えません。

期待どおりに動作させるためにこのコードを変更するには何が必要ですか?

+0

なぜこれが下降表示されていますか? –

+0

引数として渡された関数を呼び出す代わりに、まったく新しい関数を宣言しています。 – charlietfl

+0

* "私はこれをa()のように呼んでいると仮定します" * ...次に引数は何ですか? – charlietfl

答えて

-2

あなたはそれを実行させるために第2の関数firstCB()を呼び出すだけでよい:

function a(firstCB) { 
    console.log('this ran'); 
    function firstCB() { 
     console.log('now this ran'); 
    } 

    firstCB(); 
} 

a(); 
+0

ああ、ok。私は、ありがとう、参照してください。これは私が欠けていたものです。私はこの答えを正しいとマークします(7分後)。 –

+1

このアプローチはコールバックとは何の関係もないことに注意してください。 – charlietfl

+0

@charlietfl右、aの中のfirstCBを取り出すと、期待どおりに動作します。私は 'a()'の中に入れ子になっている関数を呼び出さなければならないことが分かりません –

2

コールバックを渡して呼び出します(())。代わりにコールバックを再定義します。

ここであなたが欲しいものを達成したいかの簡単な例です:

function a(firstCB) { 
 
    console.log('this ran') 
 
    firstCB(); // <-- invoke the callback that was passed in 
 
} 
 

 
a(function firstCB() { // <-- pass in a callback to `a` 
 
    console.log('now this ran') 
 
})

0

はちょうどそれを再定義していない、コールバックを呼び出します。

function a(firstCB) { 
    console.log('this ran') 
    firstCB() ; 
    console.log('now this ran') 
} 
+0

実際には関数を渡しています。おそらくそうかもしれないし、そうでないかもしれない。 – charlietfl

関連する問題