JavaScriptの関数宣言と関数式

関数宣言とは

関数(Rubyにおけるメソッド)を定義する方法の一つ

書き方

function 関数名( 引数 ){
  // 関数内の処理
}

関数式とは

関数を定義する方法の一つ
関数宣言とは違い、function(){}という無名の関数を変数に代入して関数を定義する方法

書き方

変数 = function( 引数 ){
  // 関数内の処理
}

関数宣言と関数式の違い

関数宣言と関数式では読み込まれるタイミングが異なります。

JavaScriptの関数宣言は関数の呼び出しより先に読み込まれます。一方で、関数式であれば先に読み込まれることはありません。なので以下のように記述するとエラーが起きます。

hello()

const hello = function(){
  console.log('hello')
}

このコードを実行すると Uncaught ReferenceError... と表示されます。
これは、1行目の時点で関数helloが定義されていないためです。