aboutsummaryrefslogtreecommitdiff
path: root/files/it/web/javascript/new_in_javascript
diff options
context:
space:
mode:
authorPeter Bengtsson <mail@peterbe.com>2020-12-08 14:42:17 -0500
committerPeter Bengtsson <mail@peterbe.com>2020-12-08 14:42:17 -0500
commitda78a9e329e272dedb2400b79a3bdeebff387d47 (patch)
treee6ef8aa7c43556f55ddfe031a01cf0a8fa271bfe /files/it/web/javascript/new_in_javascript
parent1109132f09d75da9a28b649c7677bb6ce07c40c0 (diff)
downloadtranslated-content-da78a9e329e272dedb2400b79a3bdeebff387d47.tar.gz
translated-content-da78a9e329e272dedb2400b79a3bdeebff387d47.tar.bz2
translated-content-da78a9e329e272dedb2400b79a3bdeebff387d47.zip
initial commit
Diffstat (limited to 'files/it/web/javascript/new_in_javascript')
-rw-r--r--files/it/web/javascript/new_in_javascript/1.8.5/index.html123
-rw-r--r--files/it/web/javascript/new_in_javascript/index.html80
-rw-r--r--files/it/web/javascript/new_in_javascript/novità_in_javascript_1.6/index.html81
-rw-r--r--files/it/web/javascript/new_in_javascript/novità_in_javascript_1.7/index.html79
4 files changed, 363 insertions, 0 deletions
diff --git a/files/it/web/javascript/new_in_javascript/1.8.5/index.html b/files/it/web/javascript/new_in_javascript/1.8.5/index.html
new file mode 100644
index 0000000000..8bc70d9638
--- /dev/null
+++ b/files/it/web/javascript/new_in_javascript/1.8.5/index.html
@@ -0,0 +1,123 @@
+---
+title: Novità in JavaScript 1.8.5
+slug: Web/JavaScript/New_in_JavaScript/1.8.5
+translation_of: Archive/Web/JavaScript/New_in_JavaScript/1.8.5
+---
+<div>{{jsSidebar("New_in_JS")}}</div>
+
+<p>The following is a changelog for JavaScript 1.8.5. This version was included in <a href="/en-US/Firefox/Releases/4">Firefox 4</a>.</p>
+
+<h2 id="Nuove_funzionalità_in_JavaScript_1.8.5">Nuove funzionalità in JavaScript 1.8.5</h2>
+
+<h3 id="Nuove_funzioni">Nuove funzioni</h3>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">Funzioni</th>
+ <th scope="col">Descrizione</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{jsxref("Object.create()")}}</td>
+ <td>Crea un nuovo oggetto con l'oggetto prototipo specificato e le proprietà. {{bug("492840")}}</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("Object.defineProperty()")}}</td>
+ <td>Aggiunge la proprietà denominata descritta da un determinato descrittore a un oggetto.</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("Object.defineProperties()")}}</td>
+ <td>Aggiunge le proprietà nominate descritte dai descrittori dati ad un oggetto.</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("Object.getOwnPropertyDescriptor()")}}</td>
+ <td>Restituisce un descrittore di proprietà per una proprietà denominata su un oggetto. {{bug("505587")}}</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("Object.keys()")}}</td>
+ <td>Restituisce una matrice di tutte le proprietà enumerabili su un oggetto. {{bug("307791")}}</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("Object.getOwnPropertyNames()")}}</td>
+ <td>Restituisce una matrice di tutte le proprietà enumerabili e non enumerabili su un oggetto. {{bug("518663")}}</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("Object.preventExtensions()")}}</td>
+ <td>Impedisce qualsiasi estensione di un oggetto. {{bug("492849")}}</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("Object.isExtensible()")}}</td>
+ <td>Determina se l'estensione di un oggetto è consentita. {{bug("492849")}}</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("Object.seal()")}}</td>
+ <td>Impedisce l'altro codice dall'eliminazione delle proprietà di un oggetto. {{bug("492845")}}</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("Object.isSealed()")}}</td>
+ <td>Determina se un oggetto è sigillato. {{bug("492845")}}</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("Object.freeze()")}}</td>
+ <td>Blocca un oggetto: l'altro codice non può eliminare o modificare alcuna proprietà. {{bug("492844")}}</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("Object.isFrozen()")}}</td>
+ <td>Determina se un oggetto è stato congelato. {{bug("492844")}}</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("Array.isArray()")}}</td>
+ <td>Controlla se una variabile è un array. {{bug("510537")}}</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("Date.prototype.toJSON()")}}</td>
+ <td>Restituisce una stringa di formato JSON per un oggetto <code>Date</code>.</td>
+ </tr>
+ <tr>
+ <td>{{jsxref("Function.prototype.bind()")}}</td>
+ <td>Crea una nuova funzione che, quando chiamata, chiama questa funzione nel contesto fornito (con una determinata sequenza di argomenti) {{bug("429507")}}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h3 id="Nuove_funzionalità_ECMAScript5">Nuove funzionalità ECMAScript5</h3>
+
+<ul>
+ <li>operatore <code><a href="/en-US/docs/Web/JavaScript/Reference/Operators/get" title="JavaScript/Reference/Operators/Special Operators/get Operator">get</a></code> e <code><a href="/en-US/docs/Web/JavaScript/Reference/Operators/set" title="JavaScript/Reference/Operators/Special Operators/set Operator">set</a></code> ora consente all'identificatore di essere numerico o una stringa. {{Bug ( "520696")}}<br>
+ . {{bug("520696")}}</li>
+ <li>{{jsxref("Function.apply()")}} può accettare qualsiasi oggetto di tipo array come elenco di argomenti, invece di solo true arrays.</li>
+ <li><a href="/en-US/docs/Web/JavaScript/Reference/Functions_and_function_scope/Strict_mode" title="JavaScript/Strict mode">strict mode support</a></li>
+ <li>{{jsxref("Array.toString()")}} ora funziona anche su non-array restituendo il risultato della chiamata al metodo <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/join" title="JavaScript/Reference/Global Objects/Array/join"><code>join()</code></a> se disponibile o chiamando il suo metodo <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/toString" title="JavaScript/Reference/Global Objects/Object/toString"><code>toString()</code></a>.</li>
+</ul>
+
+<h3 id="Altri_lavori_di_standardizzazione">Altri lavori di standardizzazione</h3>
+
+<p>Varie sintassi non standard per la definizione di getter e setter sono state rimosse; La sintassi definita da ECMAScript 5 non è stata modificata. Erano tutti piuttosto esoterici e raramente usati; se questo ti colpisce, vedi questo post sul <a class="external" href="http://whereswalden.com/2010/04/16/more-spidermonkey-changes-ancient-esoteric-very-rarely-used-syntax-for-creating-getters-and-setters-is-being-removed/" title="http://whereswalden.com/2010/04/16/more-spidermonkey-changes-ancient-esoteric-very-rarely-used-syntax-for-creating-getters-and-setters-is-being-removed/">blog</a> per i dettagli.</p>
+
+<h3 id="Nuovi_oggetti">Nuovi oggetti</h3>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">Oggetti</th>
+ <th scope="col">Descrizione</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><a href="/en-US/docs/Archive/Web/Old_Proxy_API">Old Proxy API</a></td>
+ <td>Offre supporto per la creazione di proxy Object e Function che abilitano la meta-programmazione in JavaScript.</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Funzionalità_modificata_in_JavaScript_1.8.5">Funzionalità modificata in JavaScript 1.8.5</h2>
+
+<ul>
+ <li>Supporto ISO 8601 in <code>Date</code>: il metodo {{jsxref("Date")}} dell'oggetto <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse" title="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date/parse">parse()</a> ora supporta semplici stringhe ISO 8601 format date strings</li>
+ <li>Oggetti globali resi di sola lettura: gli oggetti globali <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/NaN" title="JavaScript/Reference/Global Objects/NaN"><code>NaN</code></a>, <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Infinity" title="JavaScript/Reference/Global Objects/Infinity"><code>Infinity</code></a> e <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/undefined" title="JavaScript/Reference/Global Objects/undefined"><code>undefined</code></a> sono in sola lettura, secondo le specifiche ECMAScript 5.</li>
+ <li><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/Parent" title="JavaScript/Reference/Global Objects/Object/Parent"><code>obj.__parent__</code></a> and <code>obj.__count__</code> become obsolete. Some information about why: <a class="external" href="http://whereswalden.com/2010/05/07/spidermonkey-change-du-jour-the-special-__parent__-property-has-been-removed/" title="http://whereswalden.com/2010/05/07/spidermonkey-change-du-jour-the-special-__parent__-property-has-been-removed/">SpiderMonkey cambia du jour: la proprietà speciale __parent__ property</a> è stata rimossa {{bug("551529")}} &amp; {{bug("552560")}}.</li>
+ <li>Le virgole finali non sono più accettate in {{jsxref("JSON.parse()")}}.</li>
+</ul>
diff --git a/files/it/web/javascript/new_in_javascript/index.html b/files/it/web/javascript/new_in_javascript/index.html
new file mode 100644
index 0000000000..98a8e27ddb
--- /dev/null
+++ b/files/it/web/javascript/new_in_javascript/index.html
@@ -0,0 +1,80 @@
+---
+title: New in JavaScript
+slug: Web/JavaScript/New_in_JavaScript
+tags:
+ - NeedsTranslation
+ - TopicStub
+translation_of: Archive/Web/JavaScript/New_in_JavaScript
+---
+<div>{{jsSidebar("New_in_JS")}}</div>
+
+<p>This chapter contains information about JavaScript's version history and implementation status for Mozilla/SpiderMonkey-based JavaScript applications, such as Firefox.</p>
+
+<h2 id="ECMAScript_versions">ECMAScript versions</h2>
+
+<dl>
+ <dt><a href="/en-US/docs/Web/JavaScript/Language_Resources">Language resources</a></dt>
+ <dd>Learn more about the ECMAScript standards on which the JavaScript language is based on.</dd>
+ <dt><a href="/en-US/docs/Web/JavaScript/New_in_JavaScript/ECMAScript_5_support_in_Mozilla">ECMAScript 5 support</a></dt>
+ <dd>Implementation status for the current standard ECMA-262 Edition 5.1 in Mozilla-based engines and products.</dd>
+ <dt><a href="/en-US/docs/Web/JavaScript/New_in_JavaScript/ECMAScript_6_support_in_Mozilla">ECMAScript 6 support</a></dt>
+ <dd>Implementation status for the draft ECMA-262 Edition 6 in Mozilla-based engines and products.</dd>
+ <dt><a href="/en-US/docs/Web/JavaScript/New_in_JavaScript/ECMAScript_7_support_in_Mozilla">ECMAScript 7 support</a></dt>
+ <dd>Implementation status for the upcoming ECMA-262 Edition 7 in Mozilla-based engines and products.</dd>
+</dl>
+
+<h2 id="JavaScript_release_notes">JavaScript release notes</h2>
+
+<dl>
+ <dt><a href="/en-US/docs/Web/JavaScript/New_in_JavaScript/Firefox_JavaScript_changelog">Firefox JavaScript changelog</a></dt>
+ <dd>See this changelog for JavaScript features implemented in Firefox 5 and later.</dd>
+ <dt>Chrome JavaScript changelog</dt>
+ <dd>(TODO). See this changelog for JavaScript features implemented in Chrome releases.</dd>
+</dl>
+
+<h2 id="JavaScript_versions">JavaScript versions</h2>
+
+<p><strong>Deprecated</strong> ({{deprecated_inline()}}). The explicit versioning and opt-in of language features was Mozilla-specific and <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=867609">is in process of being removed</a>. Firefox 4 was the last version which referred to an JavaScript version (1.8.5). With new ECMA standards, JavaScript language features are now often mentioned with their initial definition in ECMA-262 Editions such as Edition 6 (ES6).</p>
+
+<p>JavaScript was released as version 1.0 in March 1996 in Netscape Navigator 2.0 and Internet Explorer 2.0.</p>
+
+<dl>
+ <dt><a href="/en-US/docs/Web/JavaScript/New_in_JavaScript/1.1">JavaScript 1.1</a></dt>
+ <dd>Version shipped in Netscape Navigator 3.0. Released on August 19, 1996.</dd>
+ <dt><a href="/en-US/docs/Web/JavaScript/New_in_JavaScript/1.2">JavaScript 1.2</a></dt>
+ <dd>Version shipped in Netscape Navigator 4.0-4.05. Released on June 11, 1997.</dd>
+ <dt><a href="/en-US/docs/Web/JavaScript/New_in_JavaScript/1.3">JavaScript 1.3</a></dt>
+ <dd>Version shipped in Netscape Navigator 4.06-4.7x. Released on October 19, 1998.<br>
+ Standardization work to be compliant with ECMA-262 1st and 2nd Edition.</dd>
+ <dt><a href="/en-US/docs/Web/JavaScript/New_in_JavaScript/1.4">JavaScript 1.4</a></dt>
+ <dd>Version shipped in Netscape's server side JavaScript. Released in 1999.</dd>
+ <dt><a href="/en-US/docs/Web/JavaScript/New_in_JavaScript/1.5">JavaScript 1.5</a></dt>
+ <dd>Version shipped in Netscape Navigator 6.0 and Firefox 1.0. Release on November 14, 2000.<br>
+ Standardization work to be compliant with ECMA-262 3rd Edition.</dd>
+ <dt><a href="/en-US/docs/Web/JavaScript/New_in_JavaScript/1.6">JavaScript 1.6</a></dt>
+ <dd>Version shipped in Firefox 1.5. Released in November 2005.<br>
+ Includes ECMAScript for XML (E4X), new <code>Array</code> methods plus <code>String</code> and <code>Array</code> generics.</dd>
+ <dt><a href="/en-US/docs/Web/JavaScript/New_in_JavaScript/1.7">JavaScript 1.7</a></dt>
+ <dd>Version shipped in Firefox 2. Released in October 2006.<br>
+ Includes generators, iterators, array comprehensions, <code>let</code> expressions, and destructuring assignment.</dd>
+ <dt><a href="/en-US/docs/Web/JavaScript/New_in_JavaScript/1.8">JavaScript 1.8</a></dt>
+ <dd>Version shipped in Firefox 3. Released in June 2008.<br>
+ Includes expression closures, generator expressions and <code>Array.reduce()</code></dd>
+ <dt><a href="/en-US/docs/Web/JavaScript/New_in_JavaScript/1.8.1">JavaScript 1.8.1</a></dt>
+ <dd>Version shipped in Firefox 3.5. Released on <span class="st">June 30, 2009.<br>
+ Includes the TraceMonkey JIT and supports native JSON.</span></dd>
+ <dt>JavaScript 1.8.2</dt>
+ <dd>Version shipped in Firefox 3.6. Released June 22, 2009.<br>
+ Includes only minor changes.</dd>
+ <dt><a href="/en-US/docs/Web/JavaScript/New_in_JavaScript/1.8.5">JavaScript 1.8.5</a></dt>
+ <dd>Version shipped in Firefox 4. Released July 27, 2010.<br>
+ Includes many new features for ECMA-262 Edition 5 compliance.<br>
+ This is the last JavaScript version.</dd>
+</dl>
+
+<h2 id="Features_still_requiring_version_opt-in">Features still requiring version opt-in</h2>
+
+<dl>
+ <dt><a href="/en-US/docs/Web/JavaScript/Reference/Statements/let"><code>let</code> statement</a></dt>
+ <dd>The <code>let</code> statement requires the JavaScript version 1.7 (or higher) opt-in. See {{bug(932517)}} and {{bug(932513)}}.</dd>
+</dl>
diff --git a/files/it/web/javascript/new_in_javascript/novità_in_javascript_1.6/index.html b/files/it/web/javascript/new_in_javascript/novità_in_javascript_1.6/index.html
new file mode 100644
index 0000000000..07ac5d386c
--- /dev/null
+++ b/files/it/web/javascript/new_in_javascript/novità_in_javascript_1.6/index.html
@@ -0,0 +1,81 @@
+---
+title: Novità in JavaScript 1.6
+slug: Web/JavaScript/New_in_JavaScript/Novità_in_JavaScript_1.6
+tags:
+ - E4X
+ - JavaScript
+ - Tutte_le_categorie
+translation_of: Archive/Web/JavaScript/New_in_JavaScript/1.6
+---
+<div>{{jsSidebar("New_in_JS")}}</div>
+
+<p>JavaScript 1.6 introduce diverse nuove funzionalità: E4X, vari metodi per gli <code>Array</code> e i metodi generici per gli array e le stringhe.</p>
+
+<p>JavaScript 1.6 è supportato in <a href="it/Firefox_1.5">Firefox 1.5</a> e successivi.</p>
+
+<h3 id="E4X" name="E4X">E4X</h3>
+
+<p>ECMAScript for XML (<a href="it/E4X">E4X</a>) è una potente tecnologia che permette di creare ed elaborare contenuto <a href="it/XML">XML</a> tramite <a href="it/JavaScript">JavaScript</a>. Continueremo a migliorare il supporto a E4X, aggiungendo anche un'integrazione trasparente al <a href="it/DOM">DOM</a> già esistente, ma gli sviluppatori che stanno creando applicazioni web basate su XML possono beneficiare del supporto a E4X in Firefox 1.5.</p>
+
+<p>E' ancora possibile utilizzare il tipo MIME standard per E4X:</p>
+
+<pre>&lt;script type="text/javascript"&gt;
+</pre>
+
+<p>Tuttavia, la sintassi di E4X può entrare in conflitto con la pratica molto comune di inserire gli script nei commenti <a href="it/HTML">HTML</a> (<code><span class="nowiki">&lt;!--...--&gt;</span></code>) per nasconderli ai vecchi browser. E4X può anche entrare in conflitto con le sezioni CDATA (<code>&lt;![CDATA{{ mediawiki.external('...') }}]&gt;</code>), che permettono l'uso di simboli "&lt;" e "&gt;" in uno script (si noti che questo non si applica all'HTML). Se si incontrano errori apparentemente inspiegabili, si provi ad aggiungere "; e4x=1" al tipo MIME:</p>
+
+<pre>&lt;script type="text/javascript; e4x=1"&gt;
+</pre>
+
+<p>Si noti che gli script nelle estensioni trattano sempre i commenti HTML nella maniera corretta. In pratica, "e4x=1" è implicito.</p>
+
+<h3 id="Aggiunte_agli_array" name="Aggiunte_agli_array">Aggiunte agli array</h3>
+
+<p>Vi sono sette nuovi metodi per gli array che possono essere divisi in due categorie, metodi di locazione di un elemento e metodi iterativi. I metodi di locazione sono:</p>
+
+<ul>
+ <li><code>indexOf()</code> - restituisce l'indice della prima occorrenza dell'elemento dato.</li>
+ <li><code>lastIndexOf|lastIndexOf()</code> - restituisce l'indice dell'ultima occorrenza dell'elemento dato.</li>
+</ul>
+
+<p>I metodi iterativi sono:</p>
+
+<ul>
+ <li><code>every()</code> - esegue una funzione per ogni elemento presente nell'array e restituisce <code>true</code> se la funzione restituisce <code>true</code> per tutti gli elementi.</li>
+ <li><code>filter()</code> - esegue una funzione per ogni elemento presente nell'array e restituisce un array di tutti gli elementi per i quali la funzione ha restituito <code>true</code>.</li>
+ <li><code>forEach()</code> - esegue una funzione per ogni elemento presente nell'array.</li>
+ <li><code>map()</code> - esegue una funzione per ogni elemento presente nell'array e restituisce i risultati in un altro array.</li>
+ <li><code>some()</code> - esegue una funzione per ogni elemento presente nell'array e restituisce <code>true</code> se la funzione restituisce <code>true</code> per almeno uno degli elementi.</li>
+</ul>
+
+<p>Per ulteriori informazioni, si veda l'articolo (in inglese) di Nicholas C. Zakas: <span class="exlink"><a href="it/Mozilla's_New_Array_Methods_(external)">Mozilla's New Array Methods</a></span>.</p>
+
+<h3 id="Metodi_generici_per_array_e_stringhe" name="Metodi_generici_per_array_e_stringhe">Metodi generici per array e stringhe</h3>
+
+<p>A volte si vorrebbe utilizzare i metodi per gli array con le stringhe. Facendo questo, si tratta una stringa come se fosse un array di caratteri. Per esempio, per controllare che ogni carattere nella variabile <var>str</var> sia una lettera, si potrebbe scrivere:</p>
+
+<pre>function isLetter(character) {
+ return (character &gt;= "a" &amp;&amp; character &lt;= "z");
+}
+
+if (Array.prototype.every.call(str, isLetter))
+ alert("La stringa '" + str + "' contiene solo lettere!");
+</pre>
+
+<p>Questa notazione è piuttosto lunga e JavaScript 1.6 introduce una scorciatoia:</p>
+
+<pre>if (Array.every(str, isLetter))
+ alert("La stringa '" + str + "' contiene solo lettere!");
+</pre>
+
+<p>Similmente, si può facilmente applicare un metodo stringa a qualsiasi oggetto:</p>
+
+<pre>var num = 15;
+alert(String.replace(num, /5/, '2'));
+</pre>
+
+<h3 id="Vedi_anche" name="Vedi_anche">Vedi anche</h3>
+
+<p><a href="it/Novit%c3%a0_in_JavaScript_1.7">Novità in JavaScript 1.7</a> introdotte in <a href="it/Firefox_2">Firefox 2</a>.</p>
+
+<p>{{ languages( { "en": "en/New_in_JavaScript_1.6", "fr": "fr/Nouveaut\u00e9s_dans_JavaScript_1.6", "ja": "ja/New_in_JavaScript_1.6", "pl": "pl/Nowo\u015bci_w_JavaScript_1.6", "ru": "ru/\u041d\u043e\u0432\u043e\u0435_\u0432_JavaScript_1.6" } ) }}</p>
diff --git a/files/it/web/javascript/new_in_javascript/novità_in_javascript_1.7/index.html b/files/it/web/javascript/new_in_javascript/novità_in_javascript_1.7/index.html
new file mode 100644
index 0000000000..8b8cb7b5bf
--- /dev/null
+++ b/files/it/web/javascript/new_in_javascript/novità_in_javascript_1.7/index.html
@@ -0,0 +1,79 @@
+---
+title: Novità in JavaScript 1.7
+slug: Web/JavaScript/New_in_JavaScript/Novità_in_JavaScript_1.7
+tags:
+ - JavaScript
+ - Tutte_le_categorie
+translation_of: Archive/Web/JavaScript/New_in_JavaScript/1.7
+---
+<p>{{jsSidebar("New_in_JS")}}JavaScript 1.7 è un aggiornamento del linguaggio che include diverse nuove funzionalità, in particolare i generatori, gli iteratori, novità per gli array, le espressioni <code>let</code> e l'assegnazione destrutturante. Inoltre include tutte le funzionalità di <a href="it/Novit%c3%a0_in_JavaScript_1.6">JavaScript 1.6</a>.</p>
+
+<p>Il supporto a JavaScript 1.7 è disponibile a partire da <a href="it/Firefox_2">Firefox 2</a> Beta 1.</p>
+
+<p>Gli esempi di codice riportati in questo articolo possono essere sperimentati con la shell di JavaScript. Si veda <a href="it/Introduzione_alla_shell_di_JavaScript">Introduzione alla shell di JavaScript</a>.</p>
+
+<h2 id="Usare_JavaScript_1.7" name="Usare_JavaScript_1.7">Usare JavaScript 1.7</h2>
+
+<p>Per poter usare alcune delle nuove funzionalità, occorre specificare che si intende usare JavaScript 1.7. Nel codice HTML o XUL, si inserisca:</p>
+
+<pre class="eval"> &lt;script type="application/javascript;version=1.7"/&gt;
+</pre>
+
+<p>Quando si utilizza la shell di JavaScript, occorre impostare la versione di JavaScript che si intende usare tramite la funzione <code>version()</code>:</p>
+
+<pre class="eval"> version(170);
+</pre>
+
+<p>Per usare le funzionalità che richiedono l'uso delle nuove parole chiave <code>yield</code> e <code>let</code> bisogna specificare che si sta usando la versione 1.7 perchè il codice scritto per le vecchie versioni potrebbe utilizzare quelle parole come nome di variabile o come nome di funzione. Le funzionalità che non richiedono l'utilizzo di nuove parole chiave (funzionalità riguardanti gli array e l'assegnamento destrutturante) possono essere usate senza specificare la versione di JavaScript.</p>
+
+<h2 id="Generatori_e_iteratori" name="Generatori_e_iteratori">Generatori e iteratori</h2>
+
+<p>Quando si sviluppa del codice che comprende un algoritmo iterativo (come l'iterazione su una lista o calcoli che si ripetono su un insieme di dati), vi sono spesso variabili di stato i cui valori devono essere mantenuti per tutta la durata del ciclo. Tradizionalmente, si utilizza una funzione di callback per ottenere i valori intermedi di un algoritmo iterativo.</p>
+
+<h3 id="Generatori" name="Generatori">Generatori</h3>
+
+<p>Si consideri il programma che calcola i numeri di Fibonacci:</p>
+
+<pre>function do_callback(num) {
+ document.write(num + "&lt;BR&gt;\n");
+}
+
+function fib() {
+ var i = 0, j = 1, n = 0;
+ while (n &lt; 10) {
+ do_callback(i);
+ var t = i;
+ i = j;
+ j += t;
+ n++;
+ }
+}
+
+fib();
+</pre>
+
+<p>Questo codice utilizza una routine di callback per effettuare operazioni ad ogni passo dell'iterazione. In questo caso, ogni numero di Fibonacci è semplicemente scritto sulla console.</p>
+
+<p>I generatori e gli iteratori lavorano insieme per fornire un metodo nuovo e migliore per fare questo. Vediamo come scrivere la stessa routine utilizzando un generatore:</p>
+
+<pre>function fib() {
+ var i = 0, j = 1;
+ while (true) {
+ yield i;
+ var t = i;
+ i = j;
+ j += t;
+ }
+}
+
+var g = fib();
+for (var i = 0; i &lt; 10; i++) {
+ document.write(g.next() + "&lt;BR&gt;\n");
+}
+</pre>
+
+<p>La funzione contenente la parola chiave <code>yield</code> è un generatore. Quando viene chiamata i suoi parametri formali sono legati agli argomenti attuali, ma il corpo non viene realmente eseguito. Invece, viene restituito un generatore-iteratore. Ogni chiamata al metodo <code>next()</code> del generatore-iteratore effettua un nuovo ciclo. Il valore di ogni ciclo è il valore specificato dalla parola chiave <code>yield</code>. Si può pensare a <code>yield</code> come alla versione per generatori-iteratori di <code>yield</code>. Ogni volta che si chiama <code>next()</code>, il codice del generatore riprende dall'istruzione che segue la parola chiave <code>yield</code>.</p>
+
+<p>Il ciclo di un generatore-iteratore si esegue quindi chiamando ripetutamente il suo metodo <code>next()</code>, associandolo alla condizione desiderata. In questo esempio, possiamo ottenere tutti i numeri di Fibonacci che vogliamo chiamando <code>g.next()</code> fino a quando abbiamo il numero di risultati che desideriamo.</p>
+
+<p>{{ languages( { "es": "es/New_in_JavaScript_1.7", "es": "es/Novedades_en_JavaScript_1.7", "fr": "fr/Nouveaut\u00e9s_dans_JavaScript_1.7", "ja": "ja/New_in_JavaScript_1.7", "pl": "pl/Nowo\u015bci_w_JavaScript_1.7" } ) }}</p>