SSブログ

JavaScript のクロージャとは? [JavaScript]

ブックマークレットの作り方 で、うっかり「クロージャ」とか書いてしまったので、ちょっと説明(というか解説)します(ToT;

クロージャとは、JavaScript の書き方の名前です。具体的に、「これがクロージャじゃ!」というモノではありません。
プログラムの世界では、考え方とか書き方とかに名前が付いていることがよくあります。実体がないので、文字や言葉で説明すると難しく感じてしまいます。調べれば調べるほど難しい用語が出てきて、余計に理解できないということもあります。
とりあえず、「クロージャ」という名前自体にはたいした意味は無いので、「こういう書き方もできるんだ!」くらいの理解で十分です。


ブックマークレットでは、グローバル変数問題の回避策として、クロージャを使っています。本当は、他にも使い道はあるのですが、その辺は、他のサイトを検索してください。

ブックマークレットのサンプルとして示したソース
001: javascript:(
002:     function(){
003:         function g() {
004:             var title = document.title;
005:             window.alert(title);
006:         }g();
007:     }
008: )();

このソースは、次のような意味になります。

1行目
ブックマークレットの定型文です。ブックマークレットは、 javascript: から始まります

2行目
名前の無い関数(無名関数)を定義しています。
この無名関数の中に書かれた変数は、他の関数などから呼び出されることはありません。関数に名前がないので、外から呼び出せないのです。なので、他のグローバル変数とバッティングすることはない、ということになります。

3行目
関数 g() を定義しています。
4行目と5行目が、g() の処理内容です。

6行目
関数 g() を実行しています。


という書き方になっています。
無名関数を使っているというところがポイントですね。


なので、次のような書き方もできます。
001: javascript:(
002:     function(){
003:         function g(title) {
004:             window.alert(title);
005:         }
006:         var title=document.title;
007:         g(title);
008:     }
009: )();

最初の例と同じ動作をするので、処理の流れを考えてみてください。





nice!(1)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 1

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

トラックバック 0

トラックバックの受付は締め切りました

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。