代码语言:javascript复制
<!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>