最近工作忙,好几天没学习了。不过一有空还是要给自己加油的。
还是按照论坛的思路,一个题一个题地往下做,一步一个脚印。
今天的作业是:
----------------------------------------------------------------
闭包,貌似是前端领域最重要的关键词之一。记得之前看达内的视频,讲js的张东老师说,闭包非常重要,重要到你们必须每天都要复习一遍。好吧,那现在就来温习一遍。
***闭包:在函数外也可使用局部变量的特殊语法现象。
***何时使用闭包:即共享局部变量,又不希望随便篡改时。
***构建一个闭包结构:3步:
1. 使用外层函数封装受保护的局部变量
2. 在外层函数内定义专门操作局部变量的内层函数
*并返回*。
3. 在全局调用外层函数,获得内层函数的对象,保存在全局变量中反复使用。
***闭包三特点:
1. 嵌套函数
2. 内层函数使用了外层函数的局部变量
3. 内层函数对象被返回到外部,在全局反复调用
***闭包示例:
function f1(){
var n=999;
nAdd=function(){n+=1}
function f2(){alert(n);}
return f2;
}
var result=f1();
result(); //999
nAdd();
result(); //1000
-------------------------------------
论坛里还有位同学,写了这样一个闭包:
function fn(n) {
var count = n;
var tem = function (m) {
count = count * m;
return tem;
};
tem.toString = function () {
return count
};
return tem;
}
console.log(fn(2)(3)(4)); //24
只是不太明白这个闭包为什么最后打印的结果是24,有木有知道的同学呢?