JavaScriptのFunction(関数)について


JavaScriptの関数(function)はもらった引数を用いて処理を行うオブジェクトです。
関数の記述は「定義」と「実行」の2段階があります。

var hoge = function() {
return 'HOGE';
}
hoge(); //=> 'HOGE'を返す

🐠 無名関数(即時関数)について

無名関数(即時関数)を使うとスコープ範囲を限定できるのでグローバルで変数、関数の衝突を避けることができます。

var a = 'a';
// 無名関数
(function() {
var a = 'new a';
var b = 'b';
console.log(a); // => 'new a'
})();
console.info(a); //=> 'a' 無名関数とはスコープが異なる
console.info(b); //=> エラーになる

無名関数を利用したクラスの定義

無名関数を利用してクラス的なオブジェクトを定義できます。

// 無名関数
(function() {
function Hoge() {
console.log(Constructor);
}
Hoge.prototype.instanceMethod = function() {
console.log(Instance Method);
}
Hoge.classMethod = function() {
console.log(Class(Static) Method);
}
window.Hoge = Hoge;
})();
var hoge = new Hoge();
hoge.instanceMethod(); // => Instance Method
Hoge.classMethod(); // => Class(Static) Method

プライベートメソッドの模倣

クロージャを利用してプライベートメソッド、変数を模倣するサンプルです。

var generateCounter = function() {
var privateCounter = 0;
function changeBy(val) {
privateCounter += val;
}
return {
increase: function() {
changeBy(1);
},
decrease: function() {
changeBy(-1);
},
value: function() {
return privateCounter;
}
};
};
var counter1 = generateCounter();
var counter2 = generateCounter();
console.log(counter1.value()); //=> 0
counter1.increase();
counter1.increase();
console.log(counter1.value()); //=> 2
counter1.decrease();
console.log(counter1.value()); //=> 1
console.log(counter2.value()); //=> 0

🍄 functionが存在するかチェックする

JavaScriptでfunction(関数)が存在するかをチェックする場合は次のようなコードとなります。

if ( typeof sample == "function") {
sample();
}

🗽 参考リンク

📚 おすすめの書籍

🖥 サーバについて

このブログでは「Cloud Garage」さんのDev Assist Program(開発者向けインスタンス無償提供制度)でお借りしたサーバで技術検証しています。 Dev Assist Programは、開発者や開発コミュニティ、スタートアップ企業の方が1GBメモリのインスタンス3台を1年間無料で借りれる心強い制度です!(有償でも1,480円/月と格安)