頭の中でどうも気になる「遅延」という言葉。
それが遅延処理とか遅延評価だとか、その辺のニュアンスはどうでもイイ。
頭の中で引っ掛かってしまったこのキーワードを調べずにはいられない衝動が...。
このブログのサブタイトルどおりの行動ということで。(^。^)y-.。o○
DOMContentLoaded
まず引っ掛かったのが「DOMContentLoaded」。ページを構成するHTMLの解析が終わった段階で発生するのでloadイベントよりも先に実行される。
これはjQueryで実装されていて、ソースを見るとクロスブラウザに対応するのに結構手間の掛る処理を必要としていることが分かる。
jQueryを使用して書いたモノ、
$(function(){ //something... });この中に書いたモノはloadイベントより早く実行されるのは知っていたが、どのように実装されているかまでは知らなかったのでソースを見るだけでもタメになった。
気になる人はbindReady Functionを見るとイイ。
例えば「DOMContentLoaded」の代わりに「onreadystatechange」を使ったり、またそれ以外の場合の対応など、その辺のことをちゃんと理解してないと出来ないなぁ...と。
自分で書くぐらいならjQueryを利用した方がイイ、というjQueryを使う理由が一つできた感じ。
Lazy Function
正直あまり遅延評価なるものを意識したことがなかったので、これを見て「オモシロイ」と思ってしまった。特におもしろいと感じたのは#4。
引用:
var foo = function() { var t = new Date(); foo = function() { return t; }; return foo(); };
初回呼び出し時に自身を書き換えている。
つまり、fooは
初回呼び出し時
function() { var t = new Date(); foo = function() { return t; }; return foo(); };
初回呼び出し以降
function() { return t; };という形になる。
Wikipediaの言葉を借りて言うならば、「計算量の最適化」という発想がただ私自身になかっただけ、と言われればそれまでだが、確かにこのようなことを意識して書くのも大切なことだろうし、私的にはかなりツボに入っておもしろいと感じてしまった。
0 Comments:
コメントを投稿