Questo brevissimo articolo potrebbe essere sicuramente un addendum ad un mio precedente articolo.

La tecnica dei “namespace anonimi” (il nome credo di averlo appena inventato e mi scuso se non fosse formalmente correttissimo) è utile nel caso si volesse aggiungere uno snippet di codice JavaScript all’interno di un template per fare una cosa molto specifica che non merita di essere inserita all’interno dei file JavaScript di tutta l’applicazione. Ne ho avuto bisogno recentemente quando ho dovuto far scomparire un campo di una form se il valore di una certa SELECT non fosse impostato. Avevo bisogno di una variable di appoggio, ma ovviamente non volevo che questa finisse nell’oggetto globale.

Senza indugiare oltre, ecco il codice (l’ho diviso in tre passi per chiarezza espositiva):

/* Passo 1.
   Definiamo una funzione anonima per creare un namespace;
   è necessario racchiudere la definizione all'interno di una coppia
   di parentesi, o il parser JavaScript darebbe errore */

(function() {
});

/* Passo 2.
   Inseriamo all'interno del nostro "namespace" il codice che ci
   interessa eseguire. Si noti che la variable $s in questo modo
   non è globale ma rimane chiusa nel namespace (che era quello
   che volevamo ottenere) */

(function() {
  var $s = $('#generatingActionId');
  if ($s.val() == '') {
    $('#generatingActionRef-label').hide();
  }
});

/* Passo 3.
   Infine "attiviamo" il nostro codice, eseguendo la funzione anonima;
   notare la coppia di parentesi direttamente alla fine della definizione
   della funzione */

(function() {
  var $s = $('#generatingActionId');
  if ($s.val() == '') {
    $('#generatingActionRef-label').hide();
  }
})();