私は現在javascript(ES6)を学んでいる駆け出しエンジニアだ。
今回はクロージャーについて勉強したのでまとめてみる。
(この記事はJavascriptES6での勉強で得た知見を書いています)
・クロージャーとは・・・
クロージャとはローカルスコープのまわりにある情報を記憶する他の関数を内側に含む関数のことです。
クロージャーは変数を外部から変更されにくくするための仕組みで、
データがどのように変更されるかを明らかにする厳格な処理内容を作り出すことができます。
もし誰かが変数にアクセスしたいとしても、作り出した制御下でしかアクセスできません。
意図せずにそれらの変数を変更することは難しくなるわけです。
・ 実際に使われる状況でクロージャがなぜ重要でどのように使われるのか
例えば実際にある人の宿泊回数に応じて宿泊プランのアップグレードサービスを行うとしましょう。
その際にグローバル変数として特定の個人の宿泊回数が変更できてしまうと
適切な宿泊回数を堅牢に管理することができなくなってしまいます。
そういう際にクロージャーを用いて宿泊回数を意図しない方法で変更されないようにすることができます。
・クロージャーの例
closure.js
function referenceStayCount(userID) {
let stayCount = userID[stayCount];
return function countUp() {
return stayCount += 1;
};
}
const stayCounterUserA = referenceStayCount(15245);
const stayCounterUserB = referenceStayCount(11111);
stayCounterUserA();
> 29
stayCounterUserB();
> 48
stayCounterUserA();
> 30
stayCounterUserB();
> 49