JavaScriptにおける関数定義
[履歴] [最終更新] (2013/07/30 07:39:37)
最近の投稿
注目の記事

概要

function文で定義します。

sample.js

function fact(n) {
    return (n==0) ? 1 : n*fact(n-1);
}

for(var i=0; i<7; ++i) console.log(i +'!='+ fact(i));

実行例

$ node sample.js 
0!=1
1!=1
2!=2
3!=6
4!=24
5!=120
6!=720

ラムダ式も使用可能

JavaScriptでも、いわゆるラムダ式で無名関数を定義できます。

sample.js

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

console.log(f(2));

実行例

$ node sample.js 
4

引数の省略

引数を省略した場合、undefinedが代入されます。そのため、下記サンプルのような既定値の記述法が可能となります。

sample.js

function f(x,y,ope) {
    ope = ope || '+';
    switch(ope) {
    case '+': return x+y; break;
    case '-': return x-y; break;
    case '/': return x/y; break;
    case '*': return x*y; break;
    }
};

console.log(f(1,10));
console.log(f(1,10,'+'));
console.log(f(1,10,'-'));
console.log(f(1,10,'/'));
console.log(f(1,10,'*'));

実行例

$ node sample.js 
11
11
-9
0.1
10

可変長引数

argumentsオブジェクトを用いて可変長引数をもつ関数を定義できます。

sample.js

function f(/*...*/) {
    for(var i=0; i<arguments.length; ++i) 
        console.log(arguments[i]);
};

f(1);
f(1,2);
f(1,2,3);

実行例

$ node sample.js 
1
1
2
1
2
3

引数にラベルを付けて渡す

引数の個数が多すぎて順番がややこしいときに重宝します。

sample.js

function f(args) {
    return args.x + args.y + args.z;
};

console.log( f({x:1, y:2, z:3}) );

実行例

$ node sample.js 
6

クロージャ

sample.js

function f(x) {
    return function() {return x;}
};

var f_arr = [];
for(var i=0; i<5; ++i) f_arr[i] = f(i);

for(var i=0; i<5; ++i) console.log(f_arr[i]());

実行例

$ node sample.js 
0
1
2
3
4
関連ページ