関数宣言と関数式の違い
JavaScript
/**
* 次の例では、sayHello関数が定義される前に、実行が可能であることが確認できます。
* 「関数宣言」、「関数式」、「巻き上げ(ホイスティング)」という言葉を用い、
* その理由を説明してください。
*
*★解答
* function命令で関数宣言された関数は、プログラムコンパイル時に解析・登録されるため、
* 宣言しているコードの前で実行分を書いても正しく呼び出せる。
* このことを巻き上げ(ホイスティング)という。
*
* ただし、関数式・functionコンストラクタを用いた関数宣言では、実際のコード実行時に式が評価されるため、
* 宣言しているコードの前でその関数を呼び出すことは出来ない。
*/
var sayYo = function() {
console.log("Yo!");
}
sayYo(); // 呼び出し成功
sayHello(); // 呼び出し成功(なぜ?)
sayBye(); // 呼び出し失敗(この理由は分かりますよね?)
var sayBye = function() {
console.log("Bye");
}
function sayHello() {
console.log("Hello!");
}