(1) 式変数を宣言し、変数の式を定義します。例:
var func = function()
{
/*ボディコード*/
}
(2) 関数式を定義し、式の識別子を指定します。例:
function func()
{
//ボディコード
}
(3) JavaScript 組み込みの Function オブジェクト構築を使用します。例:
var func = new Function( "/*parameters */","/*body code*/");
変数定義を宣言することと、関数式を使用して定義を識別することには違いがあります。関数が渡すときに参照転送型を使用することがわかります。変数定義を使用すると式のアドレス参照が保存され、フラグ定義を使用すると式のアドレスが保存されます。したがって、変数を変更または再定義しても、元の式は変更されません。また、識別子を変更すると、それに対応する式も変更されます。例:
// 変数を宣言し、変数を定義します。 式参照
var test = function()
{
alert("reference test");
}
//式を定義し、そのアドレス情報を test1 に保存します
function test1()
{
alert("reference test1");
}
//test で参照される式を Reference に渡します
varreference = test; test1 式のアドレスをreference1 に渡します
varreference1 = test1;
//変数の参照を変更します test
test = function()
{
alert("new test " );
}
//test1 アドレスのデータを再定義します
function test1()
{
alert("new test1")
alert(reference) );//参照する式は変化しません
alert(reference1);//reference1 は test1 アドレスへの参照なので、test1 アドレスが表す内容が変化すると、reference1 の内容も変化します