aboutsummaryrefslogtreecommitdiff
path: root/files/it/web/javascript/reference/statements/var/index.html
diff options
context:
space:
mode:
Diffstat (limited to 'files/it/web/javascript/reference/statements/var/index.html')
-rw-r--r--files/it/web/javascript/reference/statements/var/index.html221
1 files changed, 0 insertions, 221 deletions
diff --git a/files/it/web/javascript/reference/statements/var/index.html b/files/it/web/javascript/reference/statements/var/index.html
deleted file mode 100644
index 41ee508d3c..0000000000
--- a/files/it/web/javascript/reference/statements/var/index.html
+++ /dev/null
@@ -1,221 +0,0 @@
----
-title: var
-slug: Web/JavaScript/Reference/Statements/var
-tags:
- - Dichiarazioni
- - Globali
- - JavaScript
- - Locali
- - Valore
- - Variabili
- - funzione
-translation_of: Web/JavaScript/Reference/Statements/var
----
-<div>{{jsSidebar("Statements")}}</div>
-
-<p>La dichiarazione <strong><code>variabile</code> </strong> dichiara una variabile, opzionalmente inizializzabile ad un valore.</p>
-
-<div>{{EmbedInteractiveExample("pages/js/statement-var.html")}}</div>
-
-
-
-<h2 id="Sintassi">Sintassi</h2>
-
-<pre class="syntaxbox">var <em>nomevariabile1 [</em>= <em>valore1] [</em>, <em>nomevariabile2 [</em>= <em>valore2] </em><em>... [</em>, <em>nomevariabileN [</em>= <em>valoreN]]]</em>;</pre>
-
-<dl>
- <dt><code>nomevariabileN</code></dt>
- <dd>Il nome della variabile. Può essere qualunque identificatore legale.</dd>
-</dl>
-
-<dl>
- <dt><code>valoreN</code></dt>
- <dd>Valore iniziale della variabile. Può essere qualunque espressione legale. Il valore di default è <em>undefined</em> (non definito).</dd>
-</dl>
-
-<h2 id="Descrizione"> Descrizione</h2>
-
-<p>Le dichiarazioni di variabile, ovunque appaiano, sono processate prima dell'esecuzione di qualsiasi codice. L'ambiente di una variabile dichiarata con <code>var</code> è il suo attuale <em>contesto di esecuzione</em>, che è la funzione di chiusura o, per le variabili dichiarate al di fuori di qualsiasi funzione, globale. Se si dichiara nuovamente una variabile JavaScript, il suo valore non sarà perso.</p>
-
-<p>Assegnando un valore a una variabile non dichirata la rende implicitamente globale (diventa una proprietà dell'oggetto) quando viene eseguita. Le differenze fra variabili dichiarate e non dichiarate sono:</p>
-
-<p>1. Le variabili dichiarate sono legate al contesto in cui sono dichiarate. Quelle non dichiarate sono sempre globali.</p>
-
-<pre class="brush: js">function x() {
- y = 1; // Genera un ReferenceError in strict mode
- var z = 2;
-}
-
-x();
-
-console.log(y); // scrive "1" in console
-console.log(z); // Genera un ReferenceError: z non è definita fuori dalla funzione x
-</pre>
-
-<p>2. Variabili dichiarate sono create prima dell'esecuzione del codice. Variabili non dichiarate non esistono finchè il codice assegnato loro non viene eseguito.</p>
-
-<pre class="brush: js">console.log(a); // Genera un ReferenceError.
-console.log('still going...'); // Non verrà eseguito.</pre>
-
-<pre class="brush: js">var a;
-console.log(a); // scrive in console "undefined" o "" a seconda del browser usato.
-console.log('still going...'); // scrive in console "still going...".</pre>
-
-<p>3. Variabili dichiarate diventano una proprietà non configurabile del loro contesto di esecuzione (funzione o globale). Quelle non dichiarate sono configurabili (per esempio, possono essere cancellate).</p>
-
-<pre class="brush: js">var a = 1;
-b = 2;
-
-delete this.a; // Genera un TypeError in strict mode. Altrimenti fallisce senza generare messaggi.
-delete this.b;
-
-console.log(a, b); // Genera un ReferenceError.
-// La proprietà 'b' è stata cancellata e non esiste più.</pre>
-
-<p>A causa di queste tre differenze, il fallimento della dichiarazione di variabile porta molto probabilmente a risultati inaspettati. Pertanto <strong>è raccomandato di dichiarare sempre le variabili, indipendentemente dal loro contesto di appartenenza (funzione o globale).</strong> In ECMAScript 5 <a href="/en-US/docs/Web/JavaScript/Reference/Functions_and_function_scope/Strict_mode">strict mode</a>, assegnare una variabile non dichiarata genera un errore.</p>
-
-<h3 id="Hoisting_di_var">Hoisting di var</h3>
-
-<p>Poichè le dichiarazioni di variabile (come le dichiarazioni in generale) sono processate prima dell'esecuzione del codice, dichiararne una in qualsiasi punto del codice è equivalente al dichiararle in cima. Questo significa anche che quella variabile può essere usata prima della dichiarazione. Questo comportamento è chiamato "hoisting" (sollevamento, innalzamento), poichè sembra che la dichiarazione di variabile sia portata in cima alla funzione o al codice globale.</p>
-
-<pre class="brush: js">bla = 2;
-var bla;
-// ...
-
-// è implicitamente interpretato come:
-
-var bla;
-bla = 2;
-</pre>
-
-<p>Per questa ragione, è consigliato sempre dichiarare le variabili in cima al loro ambiente (in cima al codice globale o della funzione in cui appaiono) al fine di rendere chiaro quali variabili appartengono alle funzioni (locali) e quali no.</p>
-
-<p>È importante precisare che l'hoisting è applicato alla dichiarazione della variabile, ma non all'inizializzazione del suo valore. Il valore verrà infatti assegnato al raggiungimento della dichiarazione :</p>
-
-<pre class="brush: js">function fai_qualcosa() {
-  console.log(bar); // non definito
-  var bar = 111;
-  console.log(bar); // 111
-}
-
-// è implicitamente interpretato come:
-function fai_qualcosa() {
-  var bar;
-  console.log(bar); // non definito
- bar = 111;
-  console.log(bar); // 111
-}
-</pre>
-
-<p> </p>
-
-<h2 id="Esempi">Esempi</h2>
-
-<h3 id="Dichiarare_e_inizializzare_due_variabili">Dichiarare e inizializzare due variabili</h3>
-
-<pre class="brush: js">var a = 0, b = 0;
-</pre>
-
-<h3 id="Assegnare_un_singolo_valore_stinga_a_due_variabili">Assegnare un singolo valore stinga a due variabili</h3>
-
-<pre class="brush: js">var a = 'A';
-var b = a;
-
-// è come dire:
-
-var a, b = a = 'A';
-</pre>
-
-<p>Prestare attenzione all'ordine:</p>
-
-<pre class="brush: js">var x = y, y = 'A';
-console.log(x + y); // non definito
-</pre>
-
-<p>Qui, <code>x</code> e <code>y</code> sono dichiarate prima dell'esecuzione del codice, gli assegnamenti verranno eseguiti in seguito. Nel momento in cui "<code>x = y</code>" viene valutato, <code>y</code> esiste quindi nessun <code>ReferenceError</code> viene generato e il suo valore risulta essere '<code>undefined</code>' (non definit). Quindi, <code>x</code> è assegnata ad un valore non definito. Ora, ad <code>y</code> è assegnato il valore 'A'. Di conseguenza, dopo la prima riga, <code>x === undefined &amp;&amp; y === 'A'</code>. Da qui il risultato.</p>
-
-<h3 id="Inizializzazione_di_più_variabili">Inizializzazione di più variabili</h3>
-
-<pre class="brush: js">var x = 0;
-
-function f() {
- var x = y = 1; // x è dichiarata localmente. y invece no!
-}
-f();
-
-console.log(x, y); // Genera un ReferenceError in strict mode (y non è definita). 0, 1 altrimenti.
-// In modalità non-strict mode:
-// x è la globale come si ci aspettava
-// però, y è uscita fuori dalla funzione!</pre>
-
-<h3 id="Globali_implicite_e_ambienti_esterni_alle_funzioni">Globali implicite e ambienti esterni alle funzioni</h3>
-
-<p><span lang="it">Le variabili che sembrano essere globali implicite possono essere riferimenti a variabili nell'ambito di una funzione esterna:</span></p>
-
-<pre class="brush: js">var x = 0; // x è dichiarata dentro l'ambiente file, poi le è assegnato valore 0
-
-console.log(typeof z); // undefined, poichè z ancora non esiste
-
-function a() { // quando a è chiamata,
- var y = 2; // y è dichiarata dentro l'ambiente della funzione a, e le è assegnato valore 2
-
- console.log(x, y); // 0 2
-
- function b() { // quando b è chiamata
- x = 3; // assegna 3 all'esistente ambiente x, non crea una nuova variabile globale
- y = 4; // assegna 4 all'esistente esterna y, non crea una nuova variabile globale
- z = 5; // crea una nuova variabile globale z e le assegna valore 5.
- } // (Throws a ReferenceError in strict mode.)
-
- b(); // chiamare b crea z come variabile globale
- console.log(x, y, z); // 3 4 5
-}
-
-a(); // chiamando a si richiama b
-console.log(x, z); // 3 5
-console.log(typeof y); // non definito, perchè y è locale alla funzione a</pre>
-
-<h2 id="Specifiche">Specifiche</h2>
-
-<table class="standard-table">
- <tbody>
- <tr>
- <th scope="col">Specifica</th>
- <th scope="col">Stato</th>
- <th scope="col">Commento</th>
- </tr>
- <tr>
- <td>{{SpecName('ES1')}}</td>
- <td>{{Spec2('ES1')}}</td>
- <td>Definizione iniziale, implementata in JavaScript 1.0</td>
- </tr>
- <tr>
- <td>{{SpecName('ES5.1', '#sec-12.2', 'var statement')}}</td>
- <td>{{Spec2('ES5.1')}}</td>
- <td> </td>
- </tr>
- <tr>
- <td>{{SpecName('ES6', '#sec-variable-statement', 'variable statement')}}</td>
- <td>{{Spec2('ES6')}}</td>
- <td> </td>
- </tr>
- <tr>
- <td>{{SpecName('ESDraft', '#sec-variable-statement', 'variable statement')}}</td>
- <td>{{Spec2('ESDraft')}}</td>
- <td> </td>
- </tr>
- </tbody>
-</table>
-
-<h2 id="Compatibilità_Browser">Compatibilità Browser</h2>
-
-
-
-<p>{{Compat("javascript.statements.var")}}</p>
-
-<h2 id="Guarda_anche">Guarda anche</h2>
-
-<ul>
- <li><a href="/en-US/docs/Web/JavaScript/Reference/Statements/let"><code>let</code></a></li>
- <li><a href="/en-US/docs/Web/JavaScript/Reference/Statements/const"><code>const</code></a></li>
-</ul>