読者になるメモ置き場この広告は、90日以上更新していないブログに表示しています。memoこちらのスライドで紹介されているjsの遅延描画についてのコードを読んで、自分がsetTimeoutの挙動について、よくわかってなさそうだったので調べてみました。大規模なJavaScript開発の話http://www.slideshare.net/terurou/javascript-13711976以下が遅延描画を考慮していないコードのサンプルになります。};コンソールからsetWidthをforで回して10回連続で呼んだ場合、_drawが10回処理されることが確認できます。こちらがスライドで紹介されているinvalidateのサンプルです(sample2)。適当にlog入れたりしてちょっと変えてあります。}同じようにコンソールからsetWidthをforで回して10回連続で呼んだ場合、invalidateが10回呼ばれ、_drawerが一回だけ処理されていることが確認できます。試しにsetTimeoutを外してみます。drawの呼び出しが10回連続で行われてしまいました。このような動きになるのでしょうか?あちこち見て調べてみた結果、こちらのエントリにsetTimeoutの挙動についてわかりやすく書いてありました。setTimeoutは、指定した時間後に指定した関数を呼び出すタイマーの働きをしますが、それとは別の利点があります。setTimeoutで指定した関数は、必ず一連の処理が終わってから実行されることが保障されています。「必ず一連の処理が終わってから実行されることが保障されています」が大事なんですね。},invalidateでthisをselfという名前の変数に保存しているのは、setTimeoutで実行される関数(_drawer)がグローバルスコープで実行されるから。クライアントサイドjavascriptの場合、_drawer内のthisはwindowオブジェクトになります。クロージャを使ってBoxオブジェクトへの参照を保持しているわけですね。null;になってるけど、、typo?)勉強になった。発...2013-08-04wraithを試してみたスクリーンショットを比較するツールwraithを試してみた。4参加グループプログラミングはてなブログをはじめよう!yuheiomori0718さんは、はてなブログを使っています。ブログを報告する引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。