JavaScriptにおけるクロージャを学んだので備忘録として
クロージャとは
- 関数とその関数が作成されたスコープの組み合わせを指す
- クロージャを利用することで関数外部から内部のデータを秘匿できる
- クロージャ関数が実行された後も関数内のローカルスコープへの参照を保持する
なぜクロージャが重要なのか、実際の現場でどんなふうに使えるか
- データをプライベートなデータとして秘匿できる為、外部からの意図しないアクセスをブロックできる
- ローカルスコープを保持し独立した状態を持つ関数を生成できる為、再利用性が向上する
クロージャの例
sample.js
function countCreator(counter = 0){
return function(){
return counter += 1;
};
};
const countA = countCreator(0); // 0から始まるカウンタ関数
const countB = countCreator(5); // 5から始まるカウンタ関数
const countC = countCreator(); // 実引数がない場合はデフォルト値(0)から始まるカウンタ関数
console.log(countA()) // 1
console.log(countA()) // 2
console.log(countA()) // 3
console.log(countB()) // 6
console.log(countB()) // 7
console.log(countB()) // 8
console.log(countC()) // 1
console.log(countC()) // 2
console.log(countC()) // 3