JavaScript 第5版 3.4 関数
Javaとの違いは、関数がデータ型であることで、引数として他の関数に渡したりすることができる。そういうところが面白いし、少ないコードで多くの処理を実装できるのは、関数をデータとして扱えるからなんだろうな。この点と、動的にプロパティを追加できる点が、Javaとの一番の違いのように感じている。Javaプログラマとしては、JavaScriptとRubyは同じもののように感じる。
3.4.1 関数リテラル
関数を定義する方法
関数定義
function hoge(v){ alert(v); }
関数リテラル
var f = function hoge(v){ // 関数名「hoge」は省略可能 alert(v); };
関数名は省略可能。また、式中に埋め込むことができる。そこが1.関数定義と異なる。
匿名関数のことをラムダ関数と呼ぶ。最初に採用したLISP言語の呼び名が由来。
Function()コンストラクタ
var f = new Function('v', 'alert(v)'); // 引数と処理内容を文字列で渡す
なんだこりゃ。ユーザに処理内容を入力してもらって、そのまま実行したい場合に使える?