Crockford tenía este ejemplo para mantener miMatriz de ser en el ámbito global:No entiendo este ejemplo de un cierre
var myName = (function() {
var myArray = ['zero','one','two','three','four'];
return function(X) {
return myArray[X];
}
}()); // This function is invoked immediately
result = myName(3); // Now invoke it "for real"
Q: Yo no entiendo por qué no es
var myName = (function(X) {
P: Cuando llamo a myName (3), ¿no se ejecuta "var myArray =" por segunda vez? Supongamos que no se ejecuta una segunda vez porque JavaScript sabe que ya se ha definido ... ¿Qué pasa con un bucle o alguna otra lógica entre la variable stmt y la función return? ¿No se ejecutará todo el tiempo?
P: ¿Puede nombrar la subfunción y llamarla en lugar de llamar a myName?
Estaba escribiendo una respuesta en el mismo sentido que esta, buena respuesta. – wambotron
'myName' ** está ** establecido para ... (* usted no es *) –
Creo que lo que quiere decir es 'var myName = someFunction;', no? – harpo