En este momento tengo la siguiente configuración:

var foo = 'bar';
function alertFoo() {
    alert(foo);
};

Si deseo abarcar foo para que no sea global, puedo hacerlo con la siguiente expresión de función:

var alertFoo = (function() {
    var foo = 'bar';
    return function() {
        alert(foo);
    }
)();

¿Hay alguna manera de convertir esta expresión de función en una declaración de función similar al primer ejemplo de código?

0
user2066880 4 sep. 2014 a las 01:34

2 respuestas

La mejor respuesta

Respuesta actualizada :

Re tu comentario:

El que está afuera, me gustaría alertar a Alzar

Bueno, usted puede hacer esto:

function alertFoo() {
    var foo = 'bar';

    doTheAlert();

    function doTheAlert() {
        alert(foo);
    }
}

... pero no puedo imaginar que realmente se adapte a tus necesidades. Aparte de eso, no, no puedes levantarlo.

Respuesta original :

Sí, puede declarar la función dentro de la expresión de la función, así:

var alertFoo = (function() {
    var foo = 'bar';

    return alertFoo;

    function alertFoo() {
        alert(foo);
    }
}();

O puede declarar la función de alcance y luego llamarla, pero luego crea otro símbolo en el alcance actual:

function scoping() {
    var foo = 'bar';

    return alertFoo;

    function alertFoo() {
        alert(foo);
    }
)
var alertFoo = scoping();
4
T.J. Crowder 3 sep. 2014 a las 21:43

Cierres de investigación.

(function( global ) {
  var foo = 'bar';
  function alertFoo() {
    alert(foo);
  };
})( window );
-2
Xaxis 3 sep. 2014 a las 21:39