JavaScriptで関数の定義方法var functionName = function() {} と function functionName() {} の違いは

目的

関数の定義の仕方に

var functionA = function() {
    // ...
};
function functionB() {
    // ...
}

がある

  • 二つの構文の違いを知りたい
  • どちらを使うべきかしりたい

説明

  • functionAは関数式(function expression)
    • その行が実行されるときに定義される
  • functionBは関数宣言(function declaration)
    • それを含む関数(なければスクリプト)が実行された時に定義される

サンプルコード

functionA(); // => エラーになる functionA is not defined
var functionA = function() {
  console.log("A");
};
functionB();// 出力される
function functionB() {
  console.log("B");
}
if (condition) {
  var functionA = function() { console.log("A"); }; // conditionがtrueの場合に定義される
}
if (condition) {
   function functionB() { console.log("B"); } // conditionと無関係に定義される
}

参考リンク