タグ

クロージャに関するtabarkaのブックマーク (3)

  • JavaScriptのIIFEとモジュールパターン | fenomas.com

    他の多くのフラッシャーと同じく、最近色々HTML5開発を触ってみている。(現時点ではEdge Animateで色々を。)で、JSはAS3とかなり似ているため、それほど慣れにくくはない。(ほとんどのJSはAS3としてでもコンパイルできるし。JSを横目で見たら、変数の型を宣言しない人が書いたAS3と見間違えられる。) ただしJSとAS3は似ている言語にしても、使われる方言が違う。例えばこれ: 最初は「はあ?」と思った。でもJSにはよ〜くあるのだ。このパターンは英語圏で「IIFE」(イッフィー)とよばれる:「Immediately-invoked function expression」。つまり即時に実行される関数エクスプレッション。まあ、コードを見ればそういうもんですね。(@spacelogueさんによると日語では即時関数というんだって) まあそれはそれで良いんだが、何のために使うのだろう?

  • 無名関数を定義して即実行する - ひげろぐ

    JavaScriptのライブラリのコードを読んでいるとよく以下のようなコードを見かける。 (function() { var hoge = {}; hoge.a = function(){ //... } //... })(); 定義した無名関数を末尾の「()」で実行しているというわけだ。代わりに「.call()」にしているものも見かける。 無名関数の関数スコープを使うことでグローバルコンテキストを汚すことを気にせずに、好きなように変数が使える。 クロージャのおかげで残したいものはグローバルコンテキストに渡して残せる。 割と昔からあるテクニックみたいだけど、にわかJavaScripter的にはなるほどと思ったのでメモ。 参考 Life is beautiful: Javascript、クロージャを使ったプライベート関数の隠蔽について

  • ちょっと高度にJavaScript/クロージャでイベントハンドラを作る | DevelopersIO

    前回の解説では、クロージャの「変数が保持される」「変数が隠蔽される」という特徴を使って、アクセサメソッドを作りました。 今回は、「呼ぶたびにクロージャが生まれる」特徴を使ってみます。 繰り返し処理内でイベントハンドラを作る まずは、何の工夫もなくやってみます。今回はjQueryも使います。 $(function() { var data = [ {label:'リンク1', value:1}, {label:'リンク2', value:2}, {label:'リンク3', value:3}, {label:'リンク4', value:4}, {label:'リンク5', value:5} ]; var ul = $('<ul/>'); for(var i = 0, l = data.length; i < l; i++) { var item = data[i]; var li = $('

  • 1