<!DOCTYPE html>
<html>
<head>
	<title></title>
</head>
<body>
	<script type="text/javascript">
		/*
    1.什么是闭包(closure)?
    闭包是一种特殊的函数。
     2.如何生成一个闭包?
      所以只要满足"是函数嵌套"、"内部函数引用外部函数数据"
        3.闭包特点:

    只要闭包还在使用外部函数的数据, 那么外部的数据就一直不会被释放
    也就是说可以延长外部函数数据的生命周期
     4.闭包注意点:
    当后续不需要使用闭包时候, 一定要手动将闭包设置为null, 否则会出现内存泄漏
    */
  /* function test()
   {
   		var i=666;
   }
     console.log(i);//会错.为什么,因为变量i作用域再test函数括号内*/
     function test(i)
     {
     	return function demo()
     	{
     		console.log(i);//内部函数引用了外部的数据i
     	}
     }
     let fn=test(666);
     fn();
     //可以将闭包变化为:
     (function test(i)
     {
     	 console.log(i); 
     })(666);
	</script>
</body>
</html>