Javascriptや他の多くの言語では、関数は「ファーストクラスオブジェクト」です。つまり、関数を呼び出したり実行したりできますが、変数や配列に関数を格納したり、関数を別の関数に渡したりすることもできます。
関数を呼び出した結果の値を渡すことについて話しているのではなく、関数自体について話していることに注意してください。検討:
function test10(f) {
for (var i=0; i<10; i++)
alert(f(i));
}
function square(x) { return x*x*; }
function cube(x) { return x*x*x; }
test10(square);
test10(cube);
square
最後の2行は、関数(およびcube
)をパラメーターとして関数に渡していますtest10
。
この()
構文は、呼び出しを行うことをJavascriptに通知し、関数名だけでなく、変数や配列要素などの任意の式で使用できます...例:
var f_arr = [square, cube];
for (var i=0; i<2; i++)
alert(f_arr[i](i+42)); // Will call square(42) and cube(43)
実際、Javascriptではコード
function square(x) {
return x * x;
}
同一ではありませんが、
square = function(x) {
return x * x;
};
したがって、関数の定義は実際に変数の割り当てに近いです