私の歴史と今

振り返ると恥ずかしくなるのが私の歴史。だけどそのときは真面目に書いていた訳でね。そんな今の私を書いていく。

JavaScript 第5版 3.4 関数

Javaとの違いは、関数がデータ型であることで、引数として他の関数に渡したりすることができる。そういうところが面白いし、少ないコードで多くの処理を実装できるのは、関数をデータとして扱えるからなんだろうな。この点と、動的にプロパティを追加できる点が、Javaとの一番の違いのように感じている。Javaプログラマとしては、JavaScriptRubyは同じもののように感じる。

3.4.1 関数リテラル

関数を定義する方法

    1. 関数定義
    2. 関数リテラル
    3. Function()コンストラクタ
関数定義
function hoge(v){
    alert(v);
}
関数リテラル
var f = function hoge(v){  // 関数名「hoge」は省略可能
    alert(v);
};

関数名は省略可能。また、式中に埋め込むことができる。そこが1.関数定義と異なる。
匿名関数のことをラムダ関数と呼ぶ。最初に採用したLISP言語の呼び名が由来。

Function()コンストラクタ
var f = new Function('v', 'alert(v)');  // 引数と処理内容を文字列で渡す

なんだこりゃ。ユーザに処理内容を入力してもらって、そのまま実行したい場合に使える?