闭包

63 阅读1分钟

有些时候我的函数总是被人拿来用,我不想别人访问和修改我的函数!把函数包裹起来,形成一个“保护圈”,因此出现了闭包。

概念

在JavaScript中,在函数中可以(嵌套)定义另一个函数时,如果内部的函数引用了外部的函数的变量,则产生闭包。简单的来说闭包就是,一个具有封闭的对外不公开的, 包裹结构, 或空间.

:封闭:函数内部声明的成员默认在函数外部不能使用

:包裹:函数内部包裹函数,内部所声明的函数就可以访问内部的成员

为了干啥?

1.闭包内的数据不允许外界访问

2.要解决的问题就是间接访问该数据

怎么用

记住4部曲==》外部函数创建--设值--设新的内部函数--返回内部函数值

//外部函数
function Bibao() {
  // 设值
  let num = 10
  //内部函数
  function get() {
    return num
  }
  function set(value) {
    num = value
  }
  //  返回内部函数值
  return { set, get }
}
let obj = Bibao()
console.log(obj.get()); 10
obj.set(1000);
console.log(obj.get()); 1000

可以以此作为模板,给函数内部设get(取)和set(设),方便使用