もうだいぶ前からすでに私はクロージャを使っています。使い方を学びましたが、実際にクロージャがどう機能するのか、また、使うと隠れたところで実際に何が起きるのかを明確に理解しているとは言えませんでした。そもそも、クロージャとは一体何なのでしょうか。 ウィキペディア はあまり役に立ちません。クロージャはいつ生成され、いつ削除されるのでしょうか。どのように実装されるべきなのでしょうか。 "use strict"; var myClosure = (function outerFunction() { var hidden = 1; return { inc: function innerFunction() { return hidden++; } }; }()); myClosure.inc(); // returns 1 myClosure.inc(); // returns 2 myClos
クラスの落とし穴1 - プロパティの初期化 クラスの落とし穴2 - メソッドとクロージャ(この投稿) クラスの落とし穴3 - 継承 クラスの落とし穴4 - プライベート変数の実装 はじめに 前回は、プロパティをコンストラクタで 初期化しなかった場合に起きる落とし穴を投稿しました。 今回は、メソッドをコンストラクタで 初期化した場合に起きてしまう落とし穴を投稿します。 プロパティとメソッドでコンストラクタ初期化するかしないか推奨の実装方法に差があるのは、javascriptの興味深いところです。 クラス定義 まずは前回のおさらいで、クラス定義を次のように書くようにしていました // クラスを定義 function Klass1 () { // プロパティ this.name = 'foo'; this.hobbies = []; }; // メソッド Klass1.prototype.set
JavaScriptで、一度しか呼ばれない関数を作る - c4se記:さっちゃんですよ☆ もっとJavascriptらしく書けないだろうかとアレンジを試みました。 function one(func) { function action() { var result = func(); action = function() { return result; } return result; }; return function() { return action(); }; } 一回実行した時点で動作を差し替えてしまいます。 Javascriptはラムダ構文があるともっといろいろ簡潔に書けるんですけどね。 トラックバック こんなエントリあげたせいでコードゴルファーを刺激してしまったようです。 Javascriptで一度しか呼ばれない関数 - ごちゃまぜの音
つい先日, というか今日, @webryone さんからのコードレビュー依頼を受け @awebprogrammer さんとレビューしてたときに見つかったバグが あまりにもあるあるw だったのでエントリーとして書かせて頂きました.(許可済) そのバグというのは, for 内でイベントリスナを登録する際に 関数と関連づけられていない変数を使ってしまい最後の変数を参照してしまうというものです. JavaScript を勉強されている方であれば誰もが通る道…のはず. いまいち文章ではわかりにくいと思うので サンプルを作ってみました. Table of contents バグの Sample 対応その1: クロージャを使う 対応その2: event.targetを使う 対応その3: forEach を使う 対応その4 : this を使う @webryone さんのライブラリ webryone.js
このサイトは、只今WEB業界で活躍中のデザイナー、プログラマーの方々の情報を集めたweb統合情報サイトです。 web帳 ども。これまたお久しぶりな感じです。 お仕事がクッソ忙しく全く他のことができない今日この頃です。 が故に良い作品も出来ているので、まぁいいかぁと思う今日この頃です。 で、疲れもピークに来ているせいか、どうも基礎的なところも分かんなくなって来てしまっているのでまとめてみました。 で内容はというと、ul、olなどのリストを取得したい時の処理に関してです。 HTML <ul class="list"> <li>1-1</li> <li>1-2</li> </ul> <ul class="list"> <li>2-1</li> <li>2-2</li> <li>2-3</li> <li>2-4</li> </ul> <ul class="list"> <li>3-1</li> <
JavaScriptの変数のスコープをきちんと理解しているかクイズで確認してみよう -Javascript Scope Quiz
JavaScriptチュートリアルBeginner's tutorialsYour first website: Adding interactivityDynamic scripting with JavaScriptJavaScript frameworks and librariesJavaScript ガイド入門編文法とデータ型制御フローとエラー処理ループとイテレーター関数式と演算子Numbers and stringsRepresenting dates & times正規表現インデックス付きコレクションキー付きコレクションオブジェクトを利用するUsing classesプロミスの使用JavaScript 型付き配列イテレーターとジェネレーターInternationalizationメタプログラミングJavaScript モジュール中級編Advanced JavaScript o
問題です。 問題: 呼び出すたびに、1,2,3,...を返すような関数 f( )を定義せよ。 f(); // 1 f(); // 2 f(); // 3 この問題、解けますでしょうか? 普通の関数では、できないと思います。 しかし「クロージャ」というのを使えば、このようなことができます。 クロージャって何だ? 「クロージャ」という言葉を、プログラムの本やサイトで目にすることがありますよね。 私が最初に見たのは続・初めてのPerl 改訂版(アルパカ本)でした。 まったく理解できませんでした。 その後、404 Blog not foundやnaoyaさんのブログなどで「クロージャ」という単語を目にしました。 やはり、まったく分かりませんでした。 とどめの一撃はWikipediaの解説記事。 クロージャ (クロージャー、Closure) は、プログラミング言語において引数以外の変数を実行時の環境
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く