即時関数

16
即時関数について

Upload: masayuki-ota

Post on 19-Jul-2015

226 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: 即時関数

即時関数について

Page 2: 即時関数

算数の問題から

① 2 * 4 – 3 = ??

② (2 * 4 – 3) = ??

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

Page 3: 即時関数

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

① var a = 2 * 4 - 3

② var b = (2 * 4 – 3)

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

Page 4: 即時関数

では、次に。。。

① var a = hoge

② var b = (hoge)

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

var hoge = function() {}

Page 5: 即時関数

以上をふまえて。。。

JS において、

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

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

Page 6: 即時関数

てことで、次。。。

① a()

② b()

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

var a = function() {}

var b = (function() {})

Page 7: 即時関数

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

b() って?

(function() {})()

です

var b = (function() {})

Page 8: 即時関数

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

a() って?

function() {}()

JS的にこの書き方はNG…

var a = function() {}

Page 9: 即時関数

なので、

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

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

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

Page 10: 即時関数

次に、

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

Page 11: 即時関数

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

function() {var a = 0;

}

console.log( a );

Page 12: 即時関数

0undefined

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

var a = 0;function() {

var b = 0;}

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

Page 13: 即時関数

つまり、、

関数の外から関数の中を

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

Page 14: 即時関数

とゆーことで

さいごです。

Page 15: 即時関数

0undefined

これを実行すると?

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

(function() {var b = 0;

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

Page 16: 即時関数

まとめると。。。

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

ってことでした。