javascript闭包
来源:互联网 发布:传奇一条龙源码 编辑:程序博客网 时间:2024/06/16 17:44
// 实现带缓存功能的乘法功能
function fn(){
// 实现乘法功能
var calculate = function(){
console.log('------------');
// 这里的arguments表示该函数被调用时传递过来的实参列表
var result = 1;
for (var i = 0; i < arguments.length; i++) {
result *= arguments[i];
}
return result;
}
var cache = {};
return function(){
// 把arguments类数组转成数组
var param = [].slice.call(arguments,0);
console.dir(arguments);
// 对数组排序
param.sort(function(a,b){
return a - b;
});
// 生成缓存标记,为了区分不同的参数数据
var cacheFlag = 'key' + param.join('-');
// var cacheFlag = 'key' + [].join.call(arguments,'-');
// 判断缓存中是否存在缓存标记
if(cacheFlag in cache){
// 有缓存,直接返回,不再计算
return cache[cacheFlag];
}else{
// 没有缓存,先计算,再存储到缓存,然后反馈
var ret = calculate.apply(null,arguments);
cache[cacheFlag] = ret;
return cache[cacheFlag];
}
// 使用apply调用calculate的作用就是把参数拆解成单个的数据
}
}
var foo = fn();
foo(1,3,2);
var ret = foo(1,2,3);
console.log(ret);
0 0
- 【JavaScript】Javascript闭包
- javascript的闭包javascript
- Javascript闭包演示javascript
- [ javascript ] javascript闭包测试!
- 【javascript】javascript中的闭包
- 【javascript】学习Javascript闭包
- 理解 JavaScript 闭包
- javascript 闭包
- javascript闭包
- Javascript闭包
- JavaScript中的"闭包"
- JavaScript 闭包
- javascript中的闭包
- 理解 JavaScript 闭包
- Javascript Closures[闭包]
- javascript闭包
- Javascript 闭包详解
- Javascript闭包技术
- LOL本地皮肤修改-一键修改
- Android项目中自定义顶部标题栏
- POJ 1129 Channel Allocation 涂色问题 DFS 回溯 搜索
- JavaScript 判断元素为空(null, undefined, NaN,empty string (""),0,false)
- Ajax上传文件
- javascript闭包
- 关于python安装环境的几个问题,mark一下
- 有哪些值得关注的技术博客(Java篇)
- Java概念性问题9
- 算法提高 超级玛丽
- POJ2100_Graveyard Design_尺取法::这样写更简洁
- LintCode 背包问题
- Linux学习-虚拟机安装Ubuntu
- eclipse的常用功能