即時関数

Post on 19-Jul-2015

226 views 1 download

Transcript of 即時関数

即時関数について

算数の問題から

① 2 * 4 – 3 = ??

② (2 * 4 – 3) = ??

①と②は同じ?? 同じです。

ということで。。。JSの変数。。。

① var a = 2 * 4 - 3

② var b = (2 * 4 – 3)

①と②は同じ?? 同じです。

では、次に。。。

① var a = hoge

② var b = (hoge)

同じです。①と②は同じ??

var hoge = function() {}

以上をふまえて。。。

JS において、

変数は変数なのですべて同じ扱いです

関数だろうが、数字だろうが、文字列だろうが、

てことで、次。。。

① a()

② b()

同じです。①と②は同じ??

var a = function() {}

var b = (function() {})

では b() をひもといていきます。

b() って?

(function() {})()

です

var b = (function() {})

とゆーことで a() もひもといていきます。

a() って?

function() {}()

JS的にこの書き方はNG…

var a = function() {}

なので、

function() {} を実行させるために

(function() {}) として、変数扱いにして

(function() {})() として、実行します

次に、

なんで即時関数にするの?

undefined実行するとどうなります?

function() {var a = 0;

}

console.log( a );

0undefined

実行するとどうなります?

var a = 0;function() {

var b = 0;}

console.log( a );console.log( b );

つまり、、

関数の外から関数の中を

参照することはできないんです

とゆーことで

さいごです。

0undefined

これを実行すると?

var a = 0;console.log( a );

(function() {var b = 0;

})();console.log( b );

まとめると。。。

他のJSと干渉しないように、つまり、外から変数を参照できないように(function() {})()で包んでしまおう

ってことでした。