JavaScript闭包
2016-06-21 16:45
274 查看
刚刚学习js,发现闭包不太好理解,稍不留神就出错,总结下今天学的内容。
以代码为例,看的清楚:
以代码为例,看的清楚:
<pre name="code" class="javascript">var cc = {name : 'cc'}; function KeepVal(val){ return function(){ return val; }; }
//保持变量 var KV = KeepVal(cc); cc = 10; console.log(cc.name); console.log(KV()); var obj1 = {} var notobj = 2; var obj2 = { obj1, notobj : notobj }; console.log(obj2); function CSum(){ var sm = 0; return function(val){ sm += val; return sm; } }
//持有状态 var cs1 = CSum(); console.log(cs1(1)); console.log(cs1(2)); console.log(cs1(3)); var cs2 = CSum(); console.log(cs2(5)); console.log(cs2(2)); console.log(cs2(3)); console.log(cs1(0)); //for循环中容易用错的闭包写法,从上面的两个例子里就可以明白为什么下面这个Array赋值要使用匿名函数了 function getifunc(val){ var arr = []; arr.length = val; for(var i = 1; i < val; ++i) { arr[i] = (function(v){ return function(){ return v; }; })(i); } return arr; } var arr = getifunc(10); console.log('array length : ' + arr.length); //console.log(arr[5]()); arr.forEach(function(currentValue, index, arr){ console.log(currentValue()); }); var arr2 = [1, 2, 3]; var EvFunc = function(currentValue, index, arr){ console.log(currentValue); }; arr2.forEach(EvFunc);
相关文章推荐
- JQuery1——基础($对象,选择器,对象转换)
- Android学习笔记(二九):嵌入浏览器
- Android java 与 javascript互访(相互调用)的方法例子
- 深入理解PHP之匿名函数
- JavaScript演示排序算法
- javascript实现10进制转为N进制数
- 最后一次说说闭包
- Ajax
- 2019年开发人员应该学习的8个JavaScript框架
- HTML中的script标签研究
- 对一个分号引发的错误研究
- 异步流程控制:7 行代码学会 co 模块
- ES6 走马观花(ECMAScript2015 新特性)
- JavaScript拆分字符串时产生空字符的原因
- Canvas 在高清屏下绘制图片变模糊的解决方法
- Redux系列02:一个炒鸡简单的react+redux例子