日々のメモ帳

プログラミングで学んだ事や趣味でやっている事などを記録しています。

JavaScriptの勉強 8日目(関数オブジェクト その1)

◆関数はオブジェクト

 

 JavaScriptでは「関数は処理手順を定義したオブジェクト(モノ)」として扱われます。オブジェクトなので変数に代入したり、引数として別の関数に渡したりすることができます。関数オブジェクトがほかのオブジェクトや変数と大きく異なるのは「()」の後ろにつけることで実行できる事です。

function add(a, b) {

    return a + b;

}

function mul(a, b) {

    return a * b;

}

 var calculator = add;

var x = calculator(2, 3);    // x = 5

calculator = mul;

var y = calculator(2, 3);    // y = 6

 

 ふたつの関数add, mulを宣言しています。関数はオブジェクトなので変数に代入することができます。addをcalculatorに代入し、calculatorに「(2, 3)」とつけることで関数を実行しています。これによりaddが実行され、xには5が代入されます。

 次にcalculatorにmulを代入して、同様に実行すると、今度はmulが実行され、yには6が格納されます。

 

 以下のように、関数の宣言と変数への代入を同時に行うことも可能です。

 

var calculator = function(a, b) {

    return a / b;

}

var z = calculator(3, 2);    // z = 1.5 

 

 上記は割り算を実行する関数ですが、関数名は明示的に記述していません。このように関数名を明示的に指定しないものを「無名関数オブジェクト」と呼びます。