Qraft(クラフト) 資格・学習クイズアプリ

JavaScript入門 練習問題 3:コールバック関数の実行順序

JavaScriptのコールバック関数について、以下のコードを実行したときのコンソールへの出力として正しいものを選んでください。

```javascript
function processData(callback) {
console.log('処理開始');
console.log('データを準備中...');
callback();
console.log('処理完了');
}

function showResult() {
console.log('結果を表示');
}

processData(showResult);
```

  1. 処理開始 データを準備中... 処理完了
  2. 結果を表示 処理開始 データを準備中... 処理完了
  3. 処理開始 データを準備中... 結果を表示 処理完了
  4. 何も出力されない
  5. 処理開始 データを準備中... 処理完了 結果を表示

Qraftユーザーの成績:正答率 60%(12/20回正解)

正解と解説を見る
正解:処理開始 データを準備中... 結果を表示 処理完了

コールバック関数は、呼び出し先の関数の中で `callback()` と書かれた位置で実行されます。このコードでは `callback()` が2つの `console.log` の後に書かれているため、「処理開始→データを準備中...→結果を表示→処理完了」の順に出力されます。

【正解の理由】
`processData` 内は上から順に実行され、`callback()`(=`showResult()`)は「データを準備中...」の後・「処理完了」の前に呼ばれるため、この位置で「結果を表示」が出力されます。

【不正解の理由】
• 処理開始→データを準備中...→処理完了:`callback()` の呼び出しが無視されており、「結果を表示」が抜けています。
• 結果を表示→処理開始→データを準備中...→処理完了:`showResult()` は `processData` に渡されるだけで、`callback()` が呼ばれるまでは実行されません。
• 何も出力されない:すべての `console.log` は正常に実行されるため、この結果にはなりません。
• 処理開始→データを準備中...→処理完了→結果を表示:`callback()` は「処理完了」より前の行に書かれているため、「結果を表示」が最後になることはありません。

← 前の問題問題一覧次の問題 →
アプリで解いてレーティングを上げる(無料・登録不要)