闭包
闭包就是能够读取其他函数内部变量的函数,由于在 Javascript 语言中,只有函数内部的子函数才能读取局部变量,因此可以把闭包简单理解成 “定义在一个函数内部的函数”。所以,在本质上,闭包就是将函数内部和函数外部连接起来的一座桥梁。
一、随机数
普通函数写出
function num(min,max){
var sum=Math.floor(Math.random()*(max-min)+min)
console.log(sum);
}
num(10,20)
num(10,20)
num(10,20)
num(10,20)
num(10,20)
num(10,20)
num(10,20)
// 打印出的值随机,每个数都不同
闭包实现
function getRandom(min, max) {
var sum = Math.floor(Math.random() * (max - min) + min)
return function () {
console.log(sum);
}
}
var result = getRandom(10, 20)
result()
result()
result()
result()
result()
result()
// 打印出的值一样
二、点赞案例
1.HTML部分代码
<body>
<button id="btn">赞 (0)</button>
</body>
2.js部分代码
var btn = document.getElementById('btn')
btn.onclick = function () {
var n = 0
return function () {
n++
this.innerHTML = `赞 (${n})`
}
}()
总结
闭包的作用:1、可以访问父函数中的变量
2、可以锁住父函数中的变量
闭包的本质:可以让其父函数作用域永恒