English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutorial di base JavaScript

Oggetto JavaScript

Funzione JavaScript

HTML DOM JS

BOM del browser JS

Tutorial di base AJAX

Manuale di riferimento JavaScript

Chiudi il blocco JavaScript

Le variabili JavaScript possono appartenereLocaleAmbito oGlobaleAmbito.

Può essere utilizzatoClausolaImpostare la variabile globale come locale (privata).

Perché ci serve una clausola?

Supponiamo di voler utilizzare una variabile per contare qualcosa e desideriamo che il contatore sia disponibile per tutte le funzioni.

Possiamo utilizzare una variabile globale e una funzione per aumentare il contatore:

// Inizializzazione del contatore
var counter = 0;
// Funzione di incrementazione del contatore
function increment() {
  counter++;
}
// Chiamata a increment() 3 volte
increment();
increment();
increment();
// Ora il contatore dovrebbe essere 3
document.getElementById("output").innerHTML = `Contatore: ${counter};`;
Testa vedere‹/›

La soluzione proposta ha un problema: qualsiasi codice sulla pagina può modificare il contatore senza chiamare increment().

La funzione interna JavaScript può risolvere questo problema.

Funzione annidata JavaScript

JavaScript supporta le funzioni annidate. Le funzioni annidate possono accedere agli ambienti superiori.

In questo esempio, la funzione interna può accedere alla variabile contatore dell'ambiente della funzione esterna:

function outer() {
  var counter = 0;
  function inner() {
      counter++;
  }
  return counter; 
}
Testa vedere‹/›

Le funzioni annidate possono risolvere il problema precedente, se possiamo accedere alla funzione inner() dall'esterno.

Dobbiamo trovare un metodo per eseguire una volta counter = 0, che è la chiusura menzionata di seguito.

Chiudi il blocco JavaScript

La chiusura è la combinazione di una funzione e dell'ambiente lessicale che dichiara la funzione.

La chiusura può accedere alle variabili dell'ambito di un'altra funzione. Questo viene realizzato creando una funzione all'interno della funzione. Naturalmente, la funzione esterna non può accedere all'ambito interno.

var increment = (function() {
  var counter = 0;
  function inner() {
      return ++counter;
  }
  return inner;
})();
Testa vedere‹/›

Il valore di ritorno della funzione di esecuzione automatica viene assegnato all'aumento dell'incremento della variabile.

La funzione di esecuzione automatica viene eseguita una volta. Imposta il contatore a zero e restituisce l'espressione della funzione.

La chiusura della funzione è in grado di accedere all'ambito genitore anche se la funzione genitore è stata chiusa.