しばしば「クロージャ」って言葉を見かけますが、皆さん、どんな意味で使っているんだろう? 単に無名関数(ラムダ式)をクロージャと呼んでいるのかな? それとも、無名関数とそこに出現する(ローカルでない)変数の束縛(環境と呼ぶんだったかな)を一緒にしたもの? 後者の意味だとして、たまたま変数束縛が空なら単なる無名関数になるから、気にする必要もないようなもんだが、束縛されてない非ローカル変数が残っていてもクロージャなのかな? function makeAffineLinear(a) { return function(x) { return a*x + b; } } makeAffineLinearで返される関数は、aを固定しても大域的bで挙動が変わってしまうのだけど、そういうのもクロージャなの? たしか、クロージャ(closure)の語源は「自由変数が全て閉じている(束縛されている)」って、そん