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

JavaScript入門 練習問題 44:関数:定義と呼び出し順序

次のコードを実行したときの実行結果として正しいものはどれですか?

```javascript
console.log(multiply(2, 3));

function multiply(a, b) {
return a * b;
}
```

  1. 関数定義の前に呼び出しているためエラーになる
  2. 数値の「6」が計算されてコンソールに出力される
  3. undefinedが返され、コンソールに出力される
  4. 処理は無視され、コンソールには何も出力されない
  5. NaNという計算不能を示す結果がコンソールに出る
正解と解説を見る
正解:数値の「6」が計算されてコンソールに出力される

functionキーワードを用いた関数宣言は、コードの実行前にメモリに登録されるため、定義より前で呼び出しても正常に処理され、数値の「6」が計算されてコンソールに出力されます。

【正解の理由】
JavaScriptでは、functionキーワードで定義した関数はスコープの先頭に「巻き上げ(ホイスティング=コードの実行前に宣言がメモリに持ち上げられる挙動)」されます。そのため、関数定義の前に呼び出しを書いても正常に動作します。

【不正解の理由】
• 「関数定義の前に呼び出しているためエラーになる」という説明は誤り。関数の巻き上げにより正常に実行される
• 「undefinedが返され、コンソールに出力される」という説明は誤り。引数に2と3が渡され、正しく計算が行われる
• 「処理は無視され、コンソールには何も出力されない」という説明は誤り。エラーにならず関数の処理が実行される
• 「NaNという計算不能を示す結果がコンソールに出る」という説明は誤り。引数は正しく受け渡されるため、計算不能にはならない

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