計算機科学の理屈上では、関数(引数、戻り値)さえあれば、あらゆる計算が可能です。変数なんていらないんです。 function F (x) { // 変更される値は引数で与えられる const a = 1; // 分かりやすさのために定数は可、ただし再代入はできない return x + a; } F(1); // 2 上の F は、与えられた数字に必ず 1 を足して返す関数ですね。関数 F は、引数 x に対して、必ず 1 つの結果を返します。プログラムの結果が予測しやすくなると同時に、エラーの原因も瞬時に分かるようになります。こういうのを参照透過性と言ったりします。 でも、上の定数 a を変更したい場合もあるでしょう。そんなときは関数 F を作る関数 G を作れば良い。 function G (a) { return function F (x) { return x + a; } }
![JavaScriptのクロージャはどういった場合に利用するのでしょうか。どんな場合にメリットがあるのか教えて頂けないでしょうか。具体的... - Yahoo!知恵袋](https://cdn-ak-scissors.b.st-hatena.com/image/square/1d07bee2b75b182ba712690f3a3464c29972e28b/height=288;version=1;width=512/https%3A%2F%2Fs.yimg.jp%2Fimages%2Fks%2Fclap%2Fimage%2Fogp%2Fogp.png)