javascriptの関数注意点、の巻き

JavaScriptマスターブック」の第四章を読み終わった。この章は関数についてだった。

あまり理解していなかった項目をメモってみる。

argumentsオブジェクト

function show(val)
{
document.writeln(val);
}

// undefined
show();
// hoge
show("hoge")
// fuga
show("hoge","fuga")

上記のようにJavaScriptではメソッドの引数の個数をチェックしない。javaならコンパイルエラーとなるのだが。
で、argumentsオブジェクトであるが、すべての引数について以下のような操作が可能である。

function show(val)
{
alert(val)
alert(arguments.length)
for( int i=0; i

上記例ではarguments[0]はvalと同様である。


calleeプロパティ

現在実行中の関数自身を参照するプロパティ。
無名関数で再帰呼び出しを実現する場合に使ったりする。

function(n)
{
if(n!=0){return n*arguments.callee(n-1);}
return 1;
}

上記はnの階乗を求めるプログラムである。