Compare Revisions

Novità in JavaScript 1.7

Revision 261298:

Revision 261298 by Federico on

Revision 213839:

Revision 213839 by Federico on

Title:
Novità in JavaScript 1.7
Novità in JavaScript 1.7
Slug:
Novità_in_JavaScript_1.7
Novità_in_JavaScript_1.7
Tags:
JavaScript, Tutte_le_categorie
Content:

Revision 261298
Revision 213839
t7    <p>t
8      JavaScript 1.7 è un aggiornamento del linguaggio che includ
>e diverse nuove funzionalità, in particolare i generatori, gli it 
>eratori, novità per gli array, le espressioni <code>let</code> e  
>l'assegnazione destrutturante. Inoltre include tutte le funzional 
>ità di <a href="it/Novit%c3%a0_in_JavaScript_1.6">JavaScript 1.6< 
>/a>. 
9    </p>
10    <p>
11      Il supporto a JavaScript 1.7 è disponibile a partire da <a 
>href="it/Firefox_2">Firefox 2</a> Beta 1. 
12    </p>
13    <p>
14      Gli esempi di codice riportati in questo articolo possono e
>ssere sperimentati con la shell di JavaScript. Si veda <a href="i 
>t/Introduzione_alla_shell_di_JavaScript">Introduzione alla shell  
>di JavaScript</a>. 
15    </p>
16    <h2 id="Usare_JavaScript_1.7" name="Usare_JavaScript_1.7">
17      Usare JavaScript 1.7
18    </h2>
19    <p>
20      Per poter usare alcune delle nuove funzionalità, occorre sp
>ecificare che si intende usare JavaScript 1.7. Nel codice HTML o  
>XUL, si inserisca: 
21    </p>
22    <pre class="eval">
23 &lt;script type="application/javascript;version=1.7"/&gt;
24</pre>
25    <p>
26      Quando si utilizza la shell di JavaScript, occorre impostar
>e la versione di JavaScript che si intende usare tramite la funzi 
>one <code>version()</code>: 
27    </p>
28    <pre class="eval">
29 version(170);
30</pre>
31    <p>
32      Per usare le funzionalità che richiedono l'uso delle nuove 
>parole chiave <code>yield</code> e <code>let</code> bisogna speci 
>ficare che si sta usando la versione 1.7 perchè il codice scritto 
> per le vecchie versioni potrebbe utilizzare quelle parole come n 
>ome di variabile o come nome di funzione. Le funzionalità che non 
> richiedono l'utilizzo di nuove parole chiave (funzionalità rigua 
>rdanti gli array e l'assegnamento destrutturante) possono essere  
>usate senza specificare la versione di JavaScript. 
33    </p>
34    <h2 id="Generatori_e_iteratori" name="Generatori_e_iteratori"
>> 
35      Generatori e iteratori
36    </h2>
37    <p>
38      Quando si sviluppa del codice che comprende un algoritmo it
>erativo (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. Tra 
>dizionalmente, si utilizza una funzione di callback per ottenere  
>i valori intermedi di un algoritmo iterativo. 
39    </p>
40    <h3 id="Generatori" name="Generatori">
41      Generatori
42    </h3>
43    <p>
44      Si consideri il programma che calcola i numeri di Fibonacci
>: 
45    </p>
46    <pre>
47function do_callback(num) {
48  document.write(num + "&lt;BR&gt;\n");
49}
50 
51function fib() {
52  var i = 0, j = 1, n = 0;
53  while (n &lt; 10) {
54    do_callback(i);
55    var t = i;
56    i = j;
57    j += t;
58    n++;
59  }
60}
61 
62fib();
63</pre>
64    <p>
65      Questo codice utilizza una routine di callback per effettua
>re operazioni ad ogni passo dell'iterazione. In questo caso, ogni 
> numero di Fibonacci è semplicemente scritto sulla console. 
66    </p>
67    <p>
68      I generatori e gli iteratori lavorano insieme per fornire u
>n metodo nuovo e migliore per fare questo. Vediamo come scrivere  
>la stessa routine utilizzando un generatore: 
69    </p>
70    <pre>
71function fib() {
72  var i = 0, j = 1;
73  while (true) {
74    yield i;
75    var t = i;
76    i = j;
77    j += t;
78  }
79}
80 
81var g = fib();
82for (var i = 0; i &lt; 10; i++) {
83  document.write(g.next() + "&lt;BR&gt;\n");
84}
85</pre>
86    <p>
87      La funzione contenente la parola chiave <code>yield</code> 
>è un generatore. Quando viene chiamata i suoi parametri formali s 
>ono legati agli argomenti attuali, ma il corpo non viene realment 
>e eseguito. Invece, viene restituito un generatore-iteratore. Ogn 
>i chiamata al metodo <code>next()</code> del generatore-iteratore 
> effettua un nuovo ciclo. Il valore di ogni ciclo è il valore spe 
>cificato dalla parola chiave <code>yield</code>. Si può pensare a 
> <code>yield</code> come alla versione per generatori-iteratori d 
>i <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>. 
88    </p>
89    <p>
90      Il ciclo di un generatore-iteratore si esegue quindi chiama
>ndo 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 desider 
>iamo. 
91    </p>{{ languages( { "es": "es/New_in_JavaScript_1.7", "es": "
>es/Novedades_en_JavaScript_1.7", "fr": "fr/Nouveaut\u00e9s_dans_J 
>avaScript_1.7", "ja": "ja/New_in_JavaScript_1.7", "pl": "pl/Nowo\ 
>u015bci_w_JavaScript_1.7" } ) }} 

Back to History