好きなだけかりんとうを食べる人生

フロントエンドとかデザインとかバックエンドとか浅く広く。社会人3年目のうぇぶでぃれくたーです。

Javascriptの関数定義、実行についてのおさらい

タイトルまんまです。
クロージャとかスコープチェーンとか調べてる間にこんがらがってきたので確認のため。

関数定義と実行のパターン

1:function命令

function test() {
    console.log('hoge');
}
test();    // hoge

関数funcを直接定義しています。
関数名()で呼び出すことができます。

2:関数リテラル

var test = function() {
    console.log('hoge');
}
test();    // hoge

無名関数を定義→変数testに定義しています。 変数名で呼び出すことができます。

3:Functionコンストラクタ

var test = new Function(console.log('hoge'));    // hoge

Functionオブジェクトのコンストラクタを利用して、変数testに関数オブジェクトを渡しています。 コンストラクタインスタンス(test)が生成された時点で実行されます。

どれを使えばいいのさ

function文か関数リテラルを使うべきみたいです。
Functionコンストラクタだとオブジェクトの生成を毎回行うのでパフォーマンス的によろしくないようで…