理解
函數內部可以訪問其外函數中的作用域
作用
- 創建私有變量
- 延長變量的聲明周期
- 一般函數中的變量在函數返回之后就會被銷毀,但是閉包會保存使用的變量,即便是上下文被摧毀了,使用的變量依舊存在
閉包的用途
- 柯里化函數的目的就是在避免重復的調用變量
- 案例
- 求一個長方形的面積,width 為10 ,高度是動態的
function fn(width){reutrn height =>{return width*height}
}
- 使用
const fn2 = fn(10) //傳入一個不變得寬度
之后再去求別的高度得面積就不需要傳入寬度,這就是閉包延長變量生命周期得一個特性
const num = fn2(20) //求width10 height20的一個長方形的面積
注意
- 閉包如果不是特定的一些任務需要使用到,頻繁的使用閉包會導致處理速度和內存消耗方面對腳本產生負面影響