浅入闭包

69 阅读1分钟

闭包

闭包的原理

那我们先来想想闭包是什么?

闭包看起来是很简单,但深入了解闭包的话还是有很多学问的。

一个全局变量的生命周期是永久,而一个局部变量却会随着函数的执行结束而销毁

怎么才能让一个局部变量的值变成生命周期永久的变量呢?这就要用到闭包了!

一个函数内部返回的是一个函数,且把里面的局部变量或者函数返回出来,这个变量就不会随着函数的消亡而消亡.

const fn=()=>{
    var a=1
    return a
}

//a=1
console.log(fn())

//这样就已经完成了一个简单的闭包

闭包的作用

  • 让一个函数内的局部变量成为一个永久存在的变量
  • 函数外能访问函数内的变量
  • 模块化私有属性和公共属性

闭包的应用场景

  1. 返回值 当我们需要使用一个函数的内部变量时,可以将他作为返回值,形成闭包就能够在外部使用,还可以返回一个函数函数中返回其中的变量
  2. 将内部定义的函数赋值给一个外部变量 通过这样的方式也能将一个内部函数保存下来

闭包的this指向问题

this指向window对象 作为一个闭包

每一个函数在执行中都会有两个自带的特殊变量,this和arguments

这个用一个变量将原本的函数保存下来,that一般

    //将这个上下文指向保存下来
    var that =this

如何销毁一个闭包

可以将这个变量赋值成一个null