「関数リテラル」の版間の差分

提供: Node.js/JavaScript入門
移動: 案内検索
(ページの作成:「関数リテラルfunction literal)とは、匿名関数、無名関数、ラムダ式と呼ばれます。 '''読み方''' ;関数リテラル:かんすう り...」)
(相違点なし)

2014年8月30日 (土) 14:13時点における版

関数リテラルfunction literal)とは、匿名関数、無名関数、ラムダ式と呼ばれます。

読み方

関数リテラル
かんすう りてらる
function literal
ふぁんくしょん りてらる

概要

以下のコードは、関数リテラルの例です。変数 square には、関数への参照が格納されます。

var square = function(x) { return x * x; };

関数リテラル(無名関数)のメリット

無名関数を用いることで、名前空間における衝突を回避できます。

関数リテラルの宣言

通常の関数定義は、以下の通りです。

function square(x) { return x * x; };

上記の関数を関数リテラルとして定義する場合には、以下の通りです。

var square = function(x) { return x * x; };

Function()を使用して、同様の定義を行えます。

var square = new Function("x", "return x * x;");

なお、上記のFunction()での定義は、jshintで下記のエラーが出ます。

The Function constructor is a form of eval.

関数リテラルの実行結果を返す例

以下の例では、変数 add に関数リテラルの参照が格納されます。

var add = function(x,y) { return x + y; };

参照ではなく、実行した結果が欲しいだけの場合があります。関数リテラルを実行して、戻り値を変数に格納するには、関数リテラルの宣言の後ろに()をつけます。

var total = function(x,y) { return x + y; } (1,2);

この例では、変数 total に関数リテラルを実行した結果得られた3が格納されます。

たとえば、こういったこともできます。

(function(x,y){return x+y;})(1,2) == 3

関連項目