javascriptとrubyのクロージャーについて

クロージャーは「ローカル変数を参照する関数」です。

このいいところは、変数を一時保存できるところだと思ってます。

function closure() {
  let x = 0;
  return function(){
    return ++x;
  }
}

c = closure()
c()
=>1
c()
=>2

何回押したとか、初回だけとかの条件分岐をする場合は、使いやすいのではないでしょうか。

ちなみにrubyだと関数はブロック(Procオブジェクト)で表すことになります。

def counter
  x = 0
  -> {x += 1}
end

c = counter
c.call
=>1
c.call
=>2

こんな感じですね。

以上です。