From da78a9e329e272dedb2400b79a3bdeebff387d47 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:42:17 -0500 Subject: initial commit --- files/it/glossary/hoisting/index.html | 74 +++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 files/it/glossary/hoisting/index.html (limited to 'files/it/glossary/hoisting/index.html') diff --git a/files/it/glossary/hoisting/index.html b/files/it/glossary/hoisting/index.html new file mode 100644 index 0000000000..77186b6b2b --- /dev/null +++ b/files/it/glossary/hoisting/index.html @@ -0,0 +1,74 @@ +--- +title: Hoisting +slug: Glossary/Hoisting +tags: + - Glossário + - JavaScript +translation_of: Glossary/Hoisting +--- +

Hoisting (sollevare, issare in italiano) è un termine che non sentirai mai usare in nessuno testo normativo prima di ECMAScript® 2015 Language Specification. L'Hoisting è stato pensato come un modo generico di pensare a come funziona, in Javascript, il contesto di esecuzione (nello specifico le fasi di creazioni e di esecuzione). Il concetto può essere poco chiaro all'inizio.

+ +

Una definizione rigida di Hoisting potrebbe essere: "(durante la fase di compilazione)  le dichiarazioni delle variabili e delle funzioni sono fisicamente spostate in cima al codice", ma questo di fatto non è quello che succede. In realtà, le dichiarazioni delle variabili e delle funzioni sono messe in memoria durante la fase di compilazione, ma rimangono esattamente dove le hai scritte nel codice.

+ +

Learn more

+ +

Technical example

+ +

Uno dei vantaggi di mettere in memoria la dichiarazione delle funzioni, prima di eseguire qualunque segmento di codice, è che questo ti permette di usare una funzione prima di dichiararla. Per esempio:

+ +
function catName(name) {
+  console.log("My cat's name is " + name);
+}
+
+catName("Tigger");
+/*
+Il risultato del codice sopra è: "My cat's name is Tigger"
+*/
+
+ +

Il codice sopra è scritto come chiunque si aspetterebbe. Ora, vediamo cosa succede quando chiamiamo la funzione prima di scriverla:

+ +
catName("Chloe");
+
+function catName(name) {
+  console.log("My cat's name is " + name);
+}
+/*
+Il risultato del codice sopra è: "My cat's name is Chloe"
+*/
+
+ +

Anche se chiamiamo la funzione all'inizio del codice, prima che questa sia scritta, il codice continua a funzionare. Questo accade grazie al comportamento del "contesto di esecuzione" (execution context) di Javascript.

+ +

L'Hoisting funziona bene anche con altri tipi di dati (data types) e con le variabili. Le variabili possono essere inizializzate e usate prima di essere dichiarate. Ma non possono essere usate senza inizializzazione.

+ +

Technical example

+ +
num = 6;
+num + 7;
+var num;
+/* non restituisce errore perchè num è dichiarata*/
+
+
+ +

Javascript "solleva" (hoists) solo le dichiarazioni, non le inizializzazioni. Se utilizzi una variabile prima di dichiararla e inizializzarla, il suo valore sarà undefined. L'esempio qui sotto dimostra questo comportamento.

+ +
var x = 1; // Initialize x
+console.log(x + " " + y); // '1 undefined'
+var y = 2; // Initialize y
+
+
+// Il codice seguente si comporterà nella stessa maniera del precedente
+var x = 1; // Initialize x
+var y; // Declare y
+console.log(x + " " + y); // '1 undefined'
+y = 2; // Initialize y
+
+ +

Technical reference

+ + -- cgit v1.2.3-54-g00ecf