闭包
/*
产生闭包的条件
1. 需要一个不销毁的函数
2. 在函数当中直接或者是间接的存在这一个函数
3. 内部函数需要访问到外部函数的局部变量
作用
可以让外部的作用域来访问函数内部作用域当中的变量
缺点
闭包当中变量一直存在于内存当中,占用的内存
对于我们低版本的IE浏览器,容易造成的内存泄露
需要一个不销毁的函数
在函数内部还需要函数
闭包使用完毕,需要手动释放
*/
<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset='UTF-8'>
<meta http-equiv='X-UA-Compatible' content='IE=edge'>
<meta name='viewport' content='width=device-width, initial-scale=1.0'>
<title>Document</title>
</head>
<body>
<script>
// function outer(){
// var a = 10;//这个变量会一直的存在于内存当中
// function inner(){
// console.log(a);
// }
// return inner;
// }
function fun(){
var a = 10;
function fun1(){
console.log(a);
}
//将这个fun1的这个函数返回出去
return fun1;
}
const result = fun()
// result = >得到的就是一个内部函数
// result(); //相当于外部作用域访问到函数作用域里面的局部变量
//手动释放
result = null;
</script>
</body>
</html>