[javascript] 関数定義について

1-1 関数リテラル

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

1-2 Function コンストラクタ

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

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

(@1)

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

1-3 function命令

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

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

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

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

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

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

3, まとめ

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