JavaScriptについて調べたことの覚書

JavaScriptを軽くする方法

圧縮加工

コメントや空白を取り除いて「圧縮」加工する(最近ではオンラインで対応しているところもある)

gzip圧縮

gzip圧縮を行って転送量を減らす「HTTP 圧縮(HTTP compression)」
http://blog.livedoor.jp/s_s11/archives/1018016.html

関数定義方法

関数を定義する方法その1 (普通のやり方)

関数を定義する方法その2 (無名関数を使う)

※JS特有のやり方

javascriptのライブラリとかを探していて良く見かける
(function (){hoge;hoge;})();
これは上記を踏まえて、無名関数を定義してすぐに実行することを意味します。

クロージャについて

なかなか理解が出来ませんでしたが、このサイトを見て脳内がかなり整理されました。
http://dqn.sakusakutto.jp/2009/01/javascript.html

ポイント
  • 関数内の関数
  • 関数を返す関数
  • 無名関数

そして、重要なのは、クロージャは関数内関数で外側の関数スコープ内の変数の状態を保持したまま関数としてreturnを返すことができるということ。


はまったところ


var method = code2name();
この時点で無名関数が実行され、クロージャ(関数内関数も実行)されるものとばかり思っていたが、そうじゃなかった・・・。
無名関数自体は実行されているが、return に指定している無名関数は実行されてない。
なので、これだけだと、クロージャオブジェクトを取得しているだけとなってしまう。
クロージャオブジェクトを取得し、それを実行させることで、始めてクロージャとして機能する・・・。
参考URL:http://hisasann.com/housetect/2007/12/post_44.html


こんな感じでajax使ってapiたたいて、次のapiたたく際の引数にしておきたい場合などに便利。

こうしておくと、呼び出す側はreadMore("引数");
を繰り返し呼ぶだけでnextIdがどんどん変わった状態で実行させることが出来るようになる。

javascriptだと変数のスコープが分かりにくいのと、callback地獄になってわかりにくくなってしまうので、こうしておくとすっきりして分かりやすくなります。