JavaScript

Function

31 May 2014

関数の定義

var 関数名 = function(引数){
    // code  
    return 戻り値
};

//立方を求める関数 cube
var cube = function(x){
    // code  
    return x * x * x; 
};

cube(5); // 125

引数

引数は複数とることができる

var multiply = function (x, y) {
   return x * y;
};

multiply(2, 5); // 10

var volume = function (w, l, h ) {
  return w * multiply(l,h);
};

volume(2, 3, 4); // 24

引数の型を関数定義時に指定する必要はない

但し、上記 cube関数のように数字を扱う引数に文字を与えると cube("five")

NaN(not a number)がもどる。

引数が正しい型でない場合でも、戻り値を数値にしたい時は

typeof(x)で、引数の型チェックを行う。

var cube = function (x) {
   if (typeof(x) != 'number') return 0;
  return x * x * x;
};

cube("string");// 0

引数は関数内でのローカル変数である

var w = 15;

var volume = function (w, l, h) {
   return w * l * h;
};

volume(2, 3, 4);
console.log(w); // 15

関数内にローカル変数を追加するには

var volume = function (w, l, h) {
  var area = w * l; // ローカル変数定義
  return area * h;
};

var area = 36; // グローバル変数
console.log(volume(2, 3, 4)); // 24
console.log(area); // 36

関数の外の変数 area はグローバルで、 プログラムのどこからでも参照できます。

呼ばれた関数は、変数 area をローカルとして扱います。

即時実行関数(IIFE: Immediately Invoked Function Expression)

(function(){ // 関数式をカッコで括ります
    // 変数はここで定義します
    // 関数の外からは参照できません
})(); // 関数を即座に実行します
var a = 1, b = 2, c = 3;

(function firstFunction(){
    var b = 5, c = 6;

    (function secondFunction(){
        var b = 8;
        console.log("a: "+a+", b: "+b+",c: "+c);

        (function thirdFunction(){
            var a = 7, c = 9;

            (function fourthFunction(){
                var a = 1, c = 8;

            })();
        })();
    })();
})();

a:1,b:8,c:6