闭包是什么?
闭包就是一个函数和这个函数内部能访问到的变量的组合。
闭包的作用是什么?
- 隐藏变量(变量私有化)
- 变量持久化
一个具体的例子:
比如玩马里奥。一开始有两条命,吃一个蘑菇加一条命,死一次减一条命。
我现在要实现这个功能,并做到有效的防止作弊器能够随意的修改命的数量(隐藏变量),还要做到在其他的js能够使用命数和加减。
var lifeControl = {};(function(){var lifes = 2 // 初始生命数量lifeControl.addLife = function(){lifes++ // 生命数加一console.log(`当前生命值:${lifes}`)}lifeControl.reduceLife = function(){lifes-- // 生命数减一console.log(`当前生命值:${lifes}`)}lifeControl.getLife =function(){return lifes // 获取生命数}})()
这样能达到什么效果?
- 直接获取lifes

报错,所以在函数外部是拿不到的
- 通过lifeControl操作lifes

没有问题。而且lifes是持久化的,并没有在函数执行完后被回收。
