逆战——h5
了解闭包
一、什么是闭包?
闭包:即重用一个变量,又保护变量不被污染的一种机制。
二、闭包的优缺点
1、延长了变量的生命周期
+ 优点: 因为执行空间不销毁, 变量也没有销毁
+ 缺点: 因为执行空间不销毁, 会一直存在在内存中
2、 可以访问函数内部的私有变量
+ 优点: 利用闭包函数可以访问函数内部的私有变量
+ 缺点: 执行空间不会销毁, 会一直存在在内存中
3、 保护私有变量(只要是函数, 就有这个特点)
+ 优点: 保护私有变量不被外界访问
+ 缺点: 如果向访问, 必须要利用闭包函数
三、调用与调用原理
<script>
// 1. 用外层函数包裹要保护的变量和内层函数
function fn(i) {
//2. 外层函数返回内层函数对象到外部
return function(n) {
console.log(n + (i++))
}
}
//3. 调用外层函数获得内层函数对象
var f = fn(10)
f(20) // 20 + 10 === 30
fn(20)(40) // 20 + 40 === 60
fn(30)(50) // 30 + 50 === 80
f(30) // 30 + 11 === 41
</script>