闭包
闭包:定义在一个函数内部的函数
本质:让父作用域成为永恒作用域
作用:
1.可以访问父函数中的变量
2.可以锁住父函数中的变量
可以访问父函数中的变量
function parent() {
var name = 'parent'
function child() {
console.log(name);//可以拿到name,打印parent
}
child()
}
parent()
在parent函数中还有一个child函数,在以前的学习中我们了解到声明在函数中的变量是局部变量,不能被其他作用域拿到,但在闭包函数中,内部函数可以拿到外部函数的变量,这就是可以访问父函数中的变量
可以锁住父函数中的变量
var btn = document.getElementsByTagName('button')[0]
btn.onclick = function () {
var num = 0
return function () {
num++
this.innerHTML = `点击${num}`
}
}()
这是一个简单的点击按钮并根据点击次数改变按钮上的数字的功能,在闭包函数中onclick方法点击后运行的是内部的闭包方法,return后的内容是一个函数,所以调用函数需要在外部的方法后再次进行调用,这次的调用是调用的return后的函数。