闭包
闭包的原理
那我们先来想想闭包是什么?
闭包看起来是很简单,但深入了解闭包的话还是有很多学问的。
一个全局变量的生命周期是永久,而一个局部变量却会随着函数的执行结束而销毁
怎么才能让一个局部变量的值变成生命周期永久的变量呢?这就要用到闭包了!
一个函数内部返回的是一个函数,且把里面的局部变量或者函数返回出来,这个变量就不会随着函数的消亡而消亡.
const fn=()=>{
var a=1
return a
}
//a=1
console.log(fn())
//这样就已经完成了一个简单的闭包
闭包的作用
- 让一个函数内的局部变量成为一个永久存在的变量
- 函数外能访问函数内的变量
- 模块化私有属性和公共属性
闭包的应用场景
- 返回值 当我们需要使用一个函数的内部变量时,可以将他作为返回值,形成闭包就能够在外部使用,还可以返回一个函数函数中返回其中的变量
- 将内部定义的函数赋值给一个外部变量 通过这样的方式也能将一个内部函数保存下来
闭包的this指向问题
this指向window对象 作为一个闭包
每一个函数在执行中都会有两个自带的特殊变量,this和arguments
这个用一个变量将原本的函数保存下来,that一般
//将这个上下文指向保存下来
var that =this
如何销毁一个闭包
可以将这个变量赋值成一个null