Domanda

    

Questa domanda ha già una risposta qui:

         
(function() {

  //do stuff

})();

EDIT: Ho inizialmente pensato che questo costrutto è stato chiamato una chiusura - non che l'effetto che ha causato risultati (potenzialmente) in una chiusura - se le variabili vengono catturati.

Questo è in alcun modo a che fare con il comportamento delle chiusure stessi -. Questo mi comprendere appieno e non è stato quello che è stato chiesto

È stato utile?

Soluzione

E 'una funzione anonima (o più precisamente una scope anonimo funzione ) che viene eseguito immediatamente.

L'uso di uno è che tutte le variabili e le funzioni che vengono dichiarate in essa sono scope a tale funzione e quindi sono nascoste da qualsiasi contesto globale (così si guadagna l'incapsulamento e informazioni nascondere).

Altri suggerimenti

è una funzione anonima, ma non è una chiusura dal momento che ci sono riferimenti alla portata esterna

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

Io di solito lo chiamano qualcosa come "l'invocazione immediata di una funzione anonima."

O, più semplicemente, "funzione di auto-invocazione".

Kindof. E 'lo fa non molto vicino intorno a qualsiasi cosa, però, e si chiama subito, quindi è davvero solo una funzione anonima.

Prendete questo codice:

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

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

Qui la funzione restituita da foo () è una chiusura. Si chiude attorno alla variabile a. Anche se un aspirante apear avere andato lungo fuori del campo di applicazione, invocando la chiusura chiamando restituisce ancora il valore.

No, una chiusura è piuttosto qualcosa in queste righe:

function outer()
{
    var variables_local_to_outer;

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

    return inner;
}

var closure = outer();

la chiusura mantiene un riferimento alle variabili locali alla funzione che restituì.

Modifica : È possibile, naturalmente, creare una chiusura con funzioni anonime:

var closure = (function(){

    var data_private_to_the_closure;

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

})();
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top