内容来源于:How do JavaScirpt closures work?
主旨:
If you can’t explain it to a six-year-old, you really don’t understand it yourself.
正文:
从前
有一位公主……
1
2> function princess(){
>
她生活在一个充满奇幻冒险的世界里, 她遇到了她的白马王子, 带着他骑着独角兽开始周游这个世界,与巨龙战斗,巧遇会说话的动物,还有其他一些新奇的事物。
1
2
3
4
5
6
7
8
9
10> var adventures = [];
> function princeCharming() { /* ... */ } //白马王子
> var unicorn = { /* ... */ }, //独角兽
> dragons = [ /* ... */ ], //龙
> squirrel = "Hello!"; //松鼠
>
> adventures.push(unicorn, dragons, squirrel, ....);
>
但是她不得不回到她的王国里,面对那些年老的大臣。
1
2> return{
>
她会经常给那些大臣们分享她作为公主最近在外面充满奇幻的冒险经历。
1
2
3
4
5
6> story: function() {
return adventures[adventures.length - 1];
}
};
}
>
但是在大臣们的眼里,总是认为她只是个小女孩……
1
2> var littleGirl = princess();
>
….讲的是一些不切实际,充满想象的故事
1
2> littleGirl.story();
>
即便所有大臣们知道他们眼前的小女孩是真的公主,但是他们却不会相信有巨龙或独角兽,因为他们自己从来没有见到过。大臣们只会觉得它们只存在于小女孩的想象之中。
但是我们却知道小女孩述说的是事实…….