プãƒã‚°ãƒ©ãƒ 言語 クãƒãƒ¼ã‚¸ãƒ£
概è¦
※関数内ã§ãƒãƒ¼ã‚«ãƒ«å¤‰æ•°ã‚’å‚ç…§ã—ã¦ã„る関数
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()を実行・・・○ 引数ã®ãªã„関数ã¯ã“れã§ï¼¯ï¼«
var Timer = window.setTimeout("Closure(10)",1000)
//1秒後ã«Closure(10)を実行・・・×
var Timer = window.setTimeout(function(){
  Closure(10);
} ,1000)
//1秒後ã«Closure(10)を実行・・・○