闭包指的是:能够访问另一个函数作用域的变量的函数
作用:增加变量的使用范围
小故事:
从前有一个公主
function princess(){
她生活在一个充满奇幻冒险的世界里,她遇到了她的白马王子,带着她骑着独角兽开始周游世界,与巨龙战斗,巧遇会说话的动物,还有一些新奇的事物。
var adventures=[];
function king(){ } //白马王子
var unicorn = { } , //独角兽
drangons = { }, //龙
squirrel = "hello!"; //会说话的动物
adventures.push( unicorn,drangons ,squirrel );
但是她不得不回到自己的王国,面对那些年老的大臣
return {
她会经常和大臣分享她作为公主最近在外面充满奇幻的冒险经历。
story: function (){
return adventures[adventures.length-1];
}
};
}
但是在大臣眼里她始终是个小女孩。。。
var littleGirl = princess();
讲的是一些不切实际的,充满想象的故事。。
littleGirl .story();
即便所有大臣们都知道他们眼前的小女孩是真的公主,但是他们却不会相信有巨龙和独角兽,因为他们自己从来没有见到过,大臣们只会觉得这些都是小女孩的想象,但是我们却知道小女孩说的是事实。。。
递归指的是反复调用本身的函数
小故事:
当你打开一扇门发现里面还有一扇门,再打开一扇门发现里面还有一扇门,直到进到最里面,没有门了,然后你再一扇门一扇门的出来,反复的递去–归来的过程即递归