プログラム言語 クロージャ

概要

※関数内でローカル変数を参照している関数

//クロージャ(ローカル変数:prmIntを参照している)
function Closure(prmInt) {
  return function() {
    alert(–prmInt);  //-1
  }
}

var myFunc1 = Closure(10);  //関数Closureそのものを格納
var myFunc2 = Closure(10);  //関数Closureそのものを格納

alert(myFunc1);
//myFunc1(=Closure)を実行して表示⇒9(prmInt初期値:10)

alert(myFunc1);
//myFunc1(=Closure)を実行して表示⇒8(prmInt初期値:9)

alert(myFunc2);
//myFunc2(=Closure)を実行して表示⇒9(prmInt初期値:10)

var Timer = window.setTimeout("Closure()",1000)
//1秒後にClosure()を実行・・・○ 引数のない関数はこれでOK

var Timer = window.setTimeout("Closure(10)",1000)
//1秒後にClosure(10)を実行・・・×

var Timer = window.setTimeout(function(){
  Closure(10);
} ,1000)
//1秒後にClosure(10)を実行・・・○