前
の記事
[JavaScript] 猿でもわかるクロージャ超入門 5 クロージャを作る
次の記事
[Javascript] 関数宣言の落とし穴 function foo ( ){..} と var foo = function ( ) {..} は動作が違うので要注意!
クロージャとは
クロージャは、言葉で説明するのが大変難しい概念です。あなたは、自転車の乗り方を、身振り手振りなしで口だけで説明できるでしょうか?
あるいは螺旋(らせん)の形を、文章で説明できるでしょうか?
きっと難しいと思うでしょう。
しかし、自転車に乗ることは誰でもできますし、針金1本あれば、螺旋(らせん)の形を作ることはできるでしょう。
「クロージャ」もこれと同じです。
だから、Wikipediaのこんな解説を見ても落ち込まないでください。
クロージャ (クロージャー、Closure) は、プログラミング言語において引数以外の変数を実行時の環境ではなく、自身が定義された環境(静的スコープ)において解決する関数のことである。理解できないですよね?
私もそうでした。
クロージャを既に知っている人にしか、この文章は理解できないでしょう。
クロージャを作るのは難しくない
しかし、説明するのは難しくても、作るのは意外と簡単。それがクロージャです。手元にウェブブラザさえあれば、誰でもクロージャは作れます。
準備はいいですか?
これから一緒にクロージャを作りましょう!
目次
- 猿でもわかるクロージャ超入門 1 問題
クロージャを使うと何ができるのか? - 猿でもわかるクロージャ超入門 2 関数の中の関数
Javascriptでは関数の中に関数を作れます。 - 猿でもわかるクロージャ超入門 3 無名関数
匿名はお好き? - 猿でもわかるクロージャ超入門 4 関数を返す関数
関数の戻り値が関数だったなら - 猿でもわかるクロージャ超入門 5 クロージャを作る
あ、できちゃった!
参考になったページ
クロージャを理解する手がかりになったページ
- nothing but ordinary - JavaScript はじめてのクロージャ入門
ここが一番わかりやすかった。 - クロージャとは - はてなキーワード
Wikipediaよりは分かりやすかった。 - JavaScriptクロージャを完全理解!スコープチェインを知る(後編) - page2 - builder by ZDNet Japan
カウンタの例がシンプルでわかりやすかった。 - JavaScript クロージャとレキシカルスコープ - Backstage of theater.js
「内部関数とクロージャはほぼ同義」という説明が、クロージャを理解するヒントになりました。
長いページですが、最初の数十行読むだけで充分よいヒントが得られます。
クロージャを理解した後で読むと目からウロコなページ
- Life is beautiful: Javascriptクイズ(中級者向け):無名関数と実行効率の話
無名関数をどういう場面で使うと効果的かがよくわかった。 - Life is beautiful: Javascript、クロージャを使ったプライベート関数の隠蔽について
クロージャをどういう場面で使うと効果的かかがよくわかった。ほおぉ。まさに目からウロコ。 - クロージャの定義 - Perl入門~サンプルコードによるPerl入門~
Perlにおけるクロージャが良く分かった。シンプルな説明がステキです。
追記①
はてなブックマークでたくさんブックマークいただいたので、さらにわかりやすくなるように書き直しました。「ここが分かりにくい」などありましたら、コメントいただければ幸いです。
ちなみに「螺旋」を文章で説明すると、
「回転しながら回転面に垂直成分のある方向へ上昇する曲線」(Wikipeidaより)
だそうです。www
(2009.12.4)
追記②
Perlのクロージャ入門書きました。[Perl]猿でもわかるクロージャ超入門
カテゴリ
JavaScript
トラックバック(1)
このブログ記事を参照しているブログ一覧: [JavaScript] 猿でもわかるクロージャ超入門 まとめ
このブログ記事に対するトラックバックURL: http://dqn.sakusakutto.jp/mt/mt-tb.cgi/252
» [JavaScript]クロージャーとはなんぞや(あさのののーと)~のトラックバック
お恥ずかしながら、知らんかった。 と言うより、クロージャーとなっているものを見たり作ったりはしていたけど、「どれがクロージャーでしょうか」と聞かれるとモ... 続きを読む
コメントする