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;
}
すなわち関数定義とは、 関数オブジェクトを作り、変数を用意してそれを入れていることに他ならない(らしい)。