这个问题在这里已经有一个答案:

(function() {

  //do stuff

})();

编辑:我最初认为该构造称为闭合 - 不是捕获变量,它在闭合中引起结果的效果。

这与封闭本身的行为无关 - 我完全理解,不是被问到的。

有帮助吗?

解决方案

这是一个匿名函数(或更准确地 范围匿名函数)立即执行。

一个人的使用是,在其中声明的任何变量和函数都范围范围为该函数,因此隐藏在任何全局上下文中(因此您获得了封装和信息隐藏)。

其他提示

这是一个匿名功能,但不是关闭,因为您没有提及外部范围

http://www.jibbering.com/faq/notes/closures/

我通常称其为“匿名函数的立即调用”之类的东西。

或者,更简单地说,“功能自我发电”。

有点儿。不过,它并没有真正关闭任何东西,并且立即被称为,因此它实际上只是一个匿名功能。

采用此代码:

function foo() {
    var a = 42;
    return function () {
        return a;
    }
}

var bar = foo();
var zab = bar();
alert(zab);

在这里,FOO()返回的功能是关闭。它关闭了一个变量。即使A会长期以来已经超出范围,但通过称其为封闭仍然可以返回该值。

不,封闭是这些界限:

function outer()
{
    var variables_local_to_outer;

    function inner()
    {
        // do stuff using variables_local_to_outer
    }

    return inner;
}

var closure = outer();

闭合保留对返回其函数的本地变量的引用。

编辑: :您当然可以使用匿名功能创建关闭:

var closure = (function(){

    var data_private_to_the_closure;

    return function() {
        // do stuff with data_private_to_the_closure
    }

})();
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top