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

        闭包:

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

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

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

        在以前的代码中方法调用完成之后,执行下文环境就会被销毁,在例子的闭包中因为“枪械”方法的“弹药数量”变量会在“装弹”方法中使用所以其执行上下文环境不能被销毁,会占用内存,所以要善用闭包。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值