2012年07月08日
クロージャーについて
今回は、クロージャーについて解説いたします。
普通に javascript を組んでいる人にとっては、縁のない世界かもしれません。
でも、こういうケースが出てきた場合に困ると思います。
自分で作成したスクリプトを、既存のページに追加するような要件です。
変数を作成したところ、初期化していない変数に何か値が入っています。
おや、初期化しないと適当な値が入るのかなと勝手に想像することもできます。
このときの原因は、既存スクリプトに書かれていた、同名の変数名でした。
このように、各スクリプトどうしで影響し合ってしまうので、
意図しない結果が出てくる可能性があります。
これを避けるために、最近作っているスクリプトについては、
クロージャーを使うようにしています。
(function(){
スクリプト本文
})();
以上のような構成にすると、匿名関数でラップすることによって、他のスクリプトからは
参照することができなくなります。
また、広域変数にしたくない変数定義を function 内に入れておくことによって、
変数のスコープをより明確に宣言できます。
function を囲む括弧ですが、これは関数を隠すためのものです。
最後の括弧 () ですが、この匿名関数を、この場で実行することをあらわします。
必要に応じて、括弧の中に引数をいれるようにしてもいいですね。
最近は jQuery が流行ってくると、こういったクロージャーの概念がなくても
スクリプトが組めるのですが、javascript は基本仕様が変わらず、
今でもバージョンアップされない言語で、すでにクロージャーの概念があることに驚きです。
普通に javascript を組んでいる人にとっては、縁のない世界かもしれません。
でも、こういうケースが出てきた場合に困ると思います。
自分で作成したスクリプトを、既存のページに追加するような要件です。
変数を作成したところ、初期化していない変数に何か値が入っています。
おや、初期化しないと適当な値が入るのかなと勝手に想像することもできます。
このときの原因は、既存スクリプトに書かれていた、同名の変数名でした。
このように、各スクリプトどうしで影響し合ってしまうので、
意図しない結果が出てくる可能性があります。
これを避けるために、最近作っているスクリプトについては、
クロージャーを使うようにしています。
(function(){
スクリプト本文
})();
以上のような構成にすると、匿名関数でラップすることによって、他のスクリプトからは
参照することができなくなります。
また、広域変数にしたくない変数定義を function 内に入れておくことによって、
変数のスコープをより明確に宣言できます。
function を囲む括弧ですが、これは関数を隠すためのものです。
最後の括弧 () ですが、この匿名関数を、この場で実行することをあらわします。
必要に応じて、括弧の中に引数をいれるようにしてもいいですね。
最近は jQuery が流行ってくると、こういったクロージャーの概念がなくても
スクリプトが組めるのですが、javascript は基本仕様が変わらず、
今でもバージョンアップされない言語で、すでにクロージャーの概念があることに驚きです。
【このカテゴリーの最新記事】
-
no image
-
no image
-
no image
-
no image
-
no image
posted by FJT at 01:32| javascript