即時関数
TRANSCRIPT
即時関数について
算数の問題から
① 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() {})()で包んでしまおう
ってことでした。