クロージャとは
- スコープ内で定義された変数同じスコープ内の関数などで参照できる状態。
なぜクロージャが重要なのか、実際の現場でどんなふうに使えるか
- スコープ内で変数を定義することで、スコープ外からの不要なアクセスを防ぐことができる。
- カウンターや在庫管理などをするときに変数の値を保持し続けなければならないときに有効。
クロージャの例
sample.js
const stockManeger = () => {
const stock = {}
return {
add: (merchandise, value) => {
stock[merchandise] === undefined ? stock[merchandise] = value : stock[merchandise] += value;
console.log(stock);
},
remove: (merchandise, value) => {
if (stock[merchandise] <= value){
delete stock[merchandise];
console.log(stock);
} else if (stock[merchandise] === undefined) {
console.log(stock);
} else {
stock[merchandise] -= value;
console.log(stock);
}
}
}
}
let operate = stockManeger();
operate.add("banana", 3); //{banana: 3}
operate.remove("banana", 1); //{banana: 2}
operate.add("apple", 2); //{banana: 2, apple: 2}
operate.remove("banana", 2); //{apple: 2}