Pebble Coding

プログラマーの作業メモ

JavaScript関数イディオム

JavaScript関数イディオムを分かりやすく解説している教科書が見当たらないので、自分用にメモしておく。

なおputs関数は以下のJavaSciprt REPL環境で動作させた場合を想定した環境独自の関数である。
JavaScript REPL

1.グローバル関数を定義し呼び出す

// squareはグローバル関数
function square(x){
  return x*x;
}
// resultはグローバル変数
var result = square(4);
puts(result); // 16

2.グローバル関数定義をグローバル変数にセットし呼び出す

// squareはグローバル変数
var square = function(x){
  return x*x;
};
var result = square(2);
puts(result); // 4

3.オブジェクトに関数を定義し呼び出す

// utilsはグローバルオブジェクト
var utils = {
  add: function(x,y){
    return x+y;
  },
  multiply: function(x,y){
    return x*y;
  }
};
var result1 = utils.add(2,3);
puts(result1); // 5
var result2 = utils.multiply(2,3);
puts(result2); // 6

4.無名関数内に定義し呼び出す。

(function() {
  // squareは関数スコープ
  function square(x) {
    return x*x;
  }
  var result = square(3);
  puts(result); // 9
}());