[javascript] 関数定義について

1-1 関数リテラル

var triangle = function(base,height){
return base * height / 2;
}
triangle(5,2);

1-2 Function コンストラクタ

var triangle = new Function(‘base’,'height’,'return base*height/2’);
triangle(5,2);

※functionコンストラクタでは、引数や関数本体を文字列として定義できる。(@1)参照

(@1)

var param = 'height’,'width’;
var formula = 'return height*width’;
var diamond = new Function(param,fomula);
document.writeln('diamond(5,2)’);

1-3 function命令

triangle(5,2);
function trinagle(base , height){
return base * height / 2;
}

2,関数定義における評価・実行タイミング

2−1 関数リテラル(1-1)/Functionコンストラクタ(1-2)は実行時に評価される。

→ 関数定義は、関数呼び出しより前に記述する

2−2 Function命令(1-3)は静的な構造を宣言する

→ Function命令では、コードを解析・コンパイルするタイミングで関数を登録している。(つまり、ファイル読み込み時に関数を登録してある。)

3, まとめ

無名関数は動的、Function命令(名前あり関数)は静的