S-JIS[2004-01-10/2006-07-02] 変更履歴
JavaScriptでは、関数は グローバルの関数しか定義できない。(クラスのメソッドのようにして使うことは出来る)
function func_name(){ 〜 } function func1(arg){ 〜 } function func2(arg1,arg2){ return arg1+arg2; } var r = func2(1,2); //呼び出し
これは、関数の保持のされ方は、以下のやり方と同じ。
var func2 = new Function("arg1", "arg2", "return arg1+arg2;"); var r = func2(1,2); //呼び出し
var func_name = function(){ 〜 } var func1 = function(arg){ 〜 } var func2 = function(arg1,arg2){ return arg1+arg2; } var r = func2(1,2); //呼び出し
Javaと違って、引数の個数を可変に出来る。
function func(){
var msg="個数:" + arguments.length + " ";
for(var i=0; i<arguments.length; i++){
msg+="," + arguments[i];
}
confirm(msg);
}
func("a"); //引数1個 func("a","b","c"); //引数3個 func(); //引数無し
↑下線部にマウスカーソルを合わせると、func()を実行します。
Javaの変数は何でも入れられるので、関数クラスも入る。
以下の例を実行してみると分かるが、関数オブジェクトを表示すると関数の定義内容が表示される。
function func_let() { var a = 1; confirm(a); a = func; confirm(a); }
また、代入した変数から関数を実行することが出来る。
function func_run() { var a = func; a(); a('abc'); }
さらには、関数そのものを置き換えることも出来る。
function abc() { confirm('abc'); } function def() { confirm('def'); } function func_chg() { var tmp = def; def = abc; abc = tmp; }
すなわち関数定義とは、 関数オブジェクトを作り、変数を用意してそれを入れていることに他ならない(らしい)。