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.装弹();
这里为了代码清晰使用了中文变量名~在其他作用域内可以通过“装弹”和“射击”的方法来改变枪械的弹药数量,但没有办法直接修改“弹药数量”的数值。
在以前的代码中方法调用完成之后,执行上下文环境就会被销毁,在例子的闭包中因为“枪械”方法的“弹药数量”变量会在“装弹”方法中使用所以其执行上下文环境不能被销毁,会占用内存,所以要善用闭包。
相关文章推荐
- 简单描述js闭包概念
- javascript深入理解js闭包(看了挺多的,感觉这篇比较透彻)
- 闭包的概念(js)
- 深入理解js中的闭包
- js闭包的理解
- javascript深入理解js闭包
- 深入理解Lua的闭包一:概念和应用
- 写四个理解JS闭包的例子
- javascript深入理解js闭包
- javascript深入理解js闭包
- javascript深入理解js闭包
- Js函数深入理解-作用域链与闭包
- javascript深入理解js闭包
- javascript深入理解js闭包
- JS闭包的理解
- javascript深入理解js闭包
- 初步接触angular.js---一些基本概念的理解
- 深刻理解js执行原理和闭包
- javascript深入理解js闭包
- javascript深入理解js闭包