Posterous Spaces is no longer available Thanks to all of my @posterous peeps. Y'all made this a crazy ride and it was an honor and pleasure working with all of y'all. Thanks to all of the users. Thanks to the academy. Nobody will read this.
だいぶ前に、クロージャ(閉包)って言葉の意味がわからないと書いたことがあります(「クロージャ、それなに?」)。最近また「クロージャ」って言葉を聞いたのですが、やっぱり何を意味しているのかわかんなくて(詮索する余裕もなくて)落ち着かない気分になりました。これはどうも精神衛生上よくない。 「クロージャ」と「ラムダ式」はまったく同義に扱ってもいいんじゃないのかな。例えばラムダ式 λx.(a*x + b) があるとき、自由変数a, bを具体化するための環境(変数束縛)をラムダ式と一緒にした (λx.(a*x + b), {a : 2, b : 1}) が古典的な意味のクロージャでしょ、たぶん。letを使えば、(let a = 2 b = 1; λx.(a*x + b)) みたく書けるけど、これも結局 (λa.λb.(λx.(a*x + b)))(2)(1) だから1個のラムダ式ですよね。 「クロー
クロージャの仕組みを理解する スコープについて理解したところで、本稿最後のテーマとして「クロージャ」について触れておくことにしよう。クロージャとは、ひと言でいうならば、「ローカル変数を参照している関数内関数」のこと。 もっとも、これだけの説明ではなかなかイメージがわきにくいと思うので、具体的にクロージャを利用したコードを1つ挙げてみよう。 function myClosure(init) { var cnt = init; return function() { return ++cnt; } } var result = myClosure(10); [A] window.alert(result()); // 11 [B] window.alert(result()); // 12 [C] window.alert(result()); // 13 [D] 一見すると、myClosur
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く