自作コンパイラの部屋 > オブジェクト指向プログラム言語としてのJavaScript > 11.関数もオブジェクトだ

11.関数もオブジェクトだ

 JavaScriptの関数は他のデータ(数値、文字列、論理値、オブジェクト)と同様に変数に代入することができます。

    function hello(p) {
        document.write("hello " + p + " world");
    }
    var f = hello;     // 関数の代入
    f("JavaScript");   // 関数オブジェクトのコール

実行結果:

 上記のように、関数はデータとして変数に代入したり、代入後の変数を関数として呼び出すことが簡単にできます。
 関数をオブジェクトとして扱うか、関数呼び出しとするかは使用する文脈("()"をつけるか否か)で決まります。
 この例で「関数の宣言」と書きました。実はこの表現は正確ではありません。JavaScriptには宣言文は一つもなく、全てが実行文としてとらえるべきです。function hello ..という文は、変数helloに関数オブジェクトを代入するという意味です。

12.関数ポインタ

目次