Javaとは違い、Javascriptでは関数もオブジェクトである。そのメモ。
- 関数を定義する
document.writeln(show("test")); //エラーになりそうでならない function show(string){ return string + ":" +string; } document.writeln(show("test")); //エラーにならない
この"function show(){}"は、どこから呼び出されてもエラーにならない。宣言の前でも宣言のあとでも。
- 変数に関数を格納する
document.writeln(show("test")); //エラーになる var show = function(string){ return string + ":" +string; } document.writeln(show("test")); //エラーにならない
変数に関数を格納した場合の呼び出しは、変数宣言の前に呼びだそうとするとエラーになる。変数に関数を入れても同じように使える。変数に関数を入れることができるようになると使い方が広がる。
- 連想配列に関数を入れて呼び出す
function show(string){ return string + ":" + string; } var arrayObject = new Object(); arrayObject["func1"] = show; arrayObject["func2"] = function(string){ return string + ":" + string + ":" + string; }; for(var i = 1 ; i <= 2 ; ++i){ document.writeln(arrayObject["func" + i]("test") + "<br>"); }
実行結果 test:test test:test:test
このように連想配列に関数を入れて処理をすることも可能となる。
- 連想配列を宣言するときに関数を格納する
var arrayObject = { func1:show, func2:function(string){ return string + ":" + string + ":" + string; } }
一つ前のは、"var arrayObject = new Object();" を行ったが、初期化時に連想配列に関数を格納することも可能。実行結果は変わらない。