有些时候我的函数总是被人拿来用,我不想别人访问和修改我的函数!把函数包裹起来,形成一个“保护圈”,因此出现了闭包。
概念
在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(设),方便使用