variables - Closure - JavaScript闭包是如何工作的?

javascript closure not working / javascript / function / scope / closures

对于那些对闭包的概念(例如函数、变量等)有一定了解,但对闭包本身并不了解的人,你将如何解释JavaScript闭包?

28 revs, 21 users 17%



Answer #1

有一个公主...

function princess() {

她生活在一个充满冒险的奇妙世界里。她遇到了她的白马王子,骑着独角兽在她的世界里到处游玩,与龙作战,遇到会说话的动物,还有许多其他奇幻的事情。

    var adventures = [];

    function princeCharming() { /* ... */ }

    var unicorn = { /* ... */ },
        dragons = [ /* ... */ ],
        squirrel = "Hello!";

    /* ... */

但她总要回到她那枯燥的家务和大人的世界。

    return {

而她经常会告诉他们她最近作为公主的惊人冒险。

        story: function() {
            return adventures[adventures.length - 1];
        }
    };
}

但他们看到的只是一个小女孩......

var littleGirl = princess();

...讲述魔术和幻想的故事

littleGirl.story();