diff options
| author | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 21:46:22 -0500 |
|---|---|---|
| committer | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 21:46:22 -0500 |
| commit | a065e04d529da1d847b5062a12c46d916408bf32 (patch) | |
| tree | fe0f8bcec1ff39a3c499a2708222dcf15224ff70 /files/it/web/javascript/new_in_javascript | |
| parent | 218934fa2ed1c702a6d3923d2aa2cc6b43c48684 (diff) | |
| download | translated-content-a065e04d529da1d847b5062a12c46d916408bf32.tar.gz translated-content-a065e04d529da1d847b5062a12c46d916408bf32.tar.bz2 translated-content-a065e04d529da1d847b5062a12c46d916408bf32.zip | |
update based on https://github.com/mdn/yari/issues/2028
Diffstat (limited to 'files/it/web/javascript/new_in_javascript')
4 files changed, 0 insertions, 363 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 deleted file mode 100644 index 8bc70d9638..0000000000 --- a/files/it/web/javascript/new_in_javascript/1.8.5/index.html +++ /dev/null @@ -1,123 +0,0 @@ ---- -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")}} & {{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 deleted file mode 100644 index 98a8e27ddb..0000000000 --- a/files/it/web/javascript/new_in_javascript/index.html +++ /dev/null @@ -1,80 +0,0 @@ ---- -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 deleted file mode 100644 index 07ac5d386c..0000000000 --- a/files/it/web/javascript/new_in_javascript/novità_in_javascript_1.6/index.html +++ /dev/null @@ -1,81 +0,0 @@ ---- -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><script type="text/javascript"> -</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"><!--...--></span></code>) per nasconderli ai vecchi browser. E4X può anche entrare in conflitto con le sezioni CDATA (<code><![CDATA{{ mediawiki.external('...') }}]></code>), che permettono l'uso di simboli "<" e ">" 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><script type="text/javascript; e4x=1"> -</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 >= "a" && character <= "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 deleted file mode 100644 index 8b8cb7b5bf..0000000000 --- a/files/it/web/javascript/new_in_javascript/novità_in_javascript_1.7/index.html +++ /dev/null @@ -1,79 +0,0 @@ ---- -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"> <script type="application/javascript;version=1.7"/> -</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 + "<BR>\n"); -} - -function fib() { - var i = 0, j = 1, n = 0; - while (n < 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 < 10; i++) { - document.write(g.next() + "<BR>\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> |
