JavaScript中闭包的使用例子
来源:互联网 发布:海外网络推广 编辑:程序博客网 时间:2024/06/13 05:40
最近看了一本叫《JavaScript设计模式与开发实践》的书,这本书在讲JavaScript实现的设计模式之前先讲了了JavaScript的闭包和高阶函数的知识,感觉十分受用。
闭包的概念很难懂,自己以前的理解就是可以在外部访问函数内部的局部变量。通过几个例子加深理解:
var func = function () { var a = 1; console.log(a++); } func(); //输出1 func(); //输出1
每次执行完一次func,局部变量都会被销毁。
使用闭包:
var func = function () { var a=1; return function (){ a++; console.log(a); }; } f = func(); f(); //2 f(); //3 f(); //4 f(); //5
每次调用f()之后,变量a并没有消失。闭包的应用:
1、封装变量:
有求连乘函数如下:
var mult = function () { var a=1; for(var i=0,l=arguments.length;i<l;i++){ a = a*arguments[i]; } return a; }
可以用闭包将其改为性能更加好的形式:
var mult = (function () { var cache = {}; var cal = function () { var a=1; for(var i=0,l=arguments.length;i<l;i++){ a = a*arguments[i]; } return a; } return function () { var args = Array.prototype.join.call(arguments,','); if (args in cache) { return cache[args]; } return cache[args] = cal.apply(null,arguments); //why not 'call(arguments)': because it is only one parameter: [arguments]. } })();console.log(mult(1,2,3));//输出6
console.log(mult(1,2,3));//输出60 0
- JavaScript中闭包的使用例子
- Javascript 计时器的简单使用例子
- 一个使用javascript promise的例子
- JavaScript中高阶函数的使用例子
- javascript常用的例子
- JavaScript的一些例子
- javaScript的例子
- javascript的日期例子
- WebSocket的JavaScript例子
- WebSocket的JavaScript例子
- WebSocket的JavaScript例子
- WebSocket的JavaScript例子
- WebSocket的JavaScript例子
- WebSocket的JavaScript例子
- WebSocket的JavaScript例子
- WebSocket的JavaScript例子
- javascript 使用VBArray (JS调用VBS的例子)
- javascript正则表达式:非捕获分组的一个使用例子
- <java并发编程实战>阅读总结(b)
- c++ stack
- 假期训练——POJ - 1176 Party Lamps 思维+暴力+DFS
- thinkpad p50 install nvidia driver
- asdf
- JavaScript中闭包的使用例子
- (21)Java学习笔记——常用对象API /Scanner类
- BZOJ 1063: [Noi2008]道路设计 树形DP
- opencv改变imshow窗口大小
- 战舰v3|stm32f103 摄像头OV2640驱动程序
- ubuntu 选择就内核启动
- 线性表之链队列
- 反转链表
- [51nod 1362]搬箱子 组合数公式