您的位置:首页 > Web前端 > JavaScript

JS概念理解(四)——闭包

2017-07-23 20:32 393 查看

        闭包:

           介绍闭包概念的文章很多了,这里我们来谈谈闭包的使用场景:先设想这样一个场景,一款FPS游戏,玩家携带的子弹上限是一定的,这时为了能在别的地方修改弹药数量,就需要将弹药数量定义为一个全局变量,然而这样不利于控制,如果不小心把它改成-1了呢?所以我们这是就需要使用闭包来就行改变和查询弹药数:

function 枪械() {
var 弹药数量 = 30;
window.射击 =  function () {
if(弹药数量 > 0){
弹药数量--;
}
};
window.装弹 = function () {
弹药数量 = 30;
};
window.弹药数 = function () {
console.log(弹药数量);
}
}

window.射击();
window.射击();
window.弹药数();//28
window.装弹();

        这里为了代码清晰使用了中文变量名~在其他作用域内可以通过“装弹”和“射击”的方法来改变枪械的弹药数量,但没有办法直接修改“弹药数量”的数值。

        在以前的代码中方法调用完成之后,执行上下文环境就会被销毁,在例子的闭包中因为“枪械”方法的“弹药数量”变量会在“装弹”方法中使用所以其执行上下文环境不能被销毁,会占用内存,所以要善用闭包。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  javascript