Skip to content

Commit 6e94b21

Browse files
authored
Merge pull request #328 from pasor1/sync
Sync
2 parents cddff42 + f3614f5 commit 6e94b21

File tree

9 files changed

+30
-23
lines changed

9 files changed

+30
-23
lines changed

1-js/03-code-quality/06-polyfills/article.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ In questo capitolo cercheremo di capire il loro funzionamento ed il loro ruolo n
2222

2323
## Transpilers
2424

25-
Un [transpiler](https://en.wikipedia.org/wiki/Source-to-source_compiler) è un particolare software capace di analizzare il codice moderno e di riscriverlo utilizzando sintassi e costrutti meno recenti, facendo in modo che il funzionamento sia simile.
25+
Un [transpiler](https://en.wikipedia.org/wiki/Source-to-source_compiler) è un particolare software che traduce il codice sorgente da un formato ad un altro. Può analizzare il codice moderno e riscriverlo utilizzando sintassi e costrutti meno recenti, rendendolo compatibile con i motori JavaScript meno recenti.
2626

2727
Es. JavaScript prima del 2020 non aveva "l'operatore di coalescenza nullo" `??`. Quindi, se un visitatore utilizza un vecchio browser, questo non potrebbe comprendere `height = height ?? 100`.
2828

1-js/04-object-basics/09-object-toprimitive/article.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -267,4 +267,4 @@ L'algoritmo di conversione segue questi passi:
267267

268268
Nella pratica, spesso è sufficiente implementare solo `obj.toString()` come metodo che "cattura tutte" le conversioni e ritorna una rappresentazione dell'oggetto "interpretabile dall'uomo", per mostrarlo o per il debugging.
269269

270-
Per quanto riguarda le operazioni matematiche, JavaScript non fornisce un modo per "sovrascriverle" utilizzando i metodi, quindi vengono raramente utilizzate in progetti reali.
270+
Per quanto riguarda le operazioni matematiche, JavaScript non fornisce un modo per "sovrascriverle" utilizzando i metodi, quindi vengono raramente utilizzate sugli oggetti.

1-js/05-data-types/02-number/article.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,10 +60,10 @@ In altre parole, un numero negativo dopo `"e"` significa una divisione per 1 seg
6060

6161
```js
6262
// -3 divide 1 con 3 zeri
63-
1e-3 = 1 / 1000 (=0.001)
63+
1e-3 = 1 / 1000; // 0.001
6464

6565
// -6 divide 1 con 6 zeri
66-
1.23e-6 = 1.23 / 1000000 (=0.00000123)
66+
1.23e-6 = 1.23 / 1000000; // 0.00000123
6767
```
6868

6969
### Numeri esadecimali, binari e ottali
@@ -440,7 +440,7 @@ Per diversi sistemi numerici:
440440

441441
Per convertire a numeri valori del tipo `12pt` e `100px`:
442442

443-
- Utilizzate parseInt/parseFloat per un conversione "soft", i quali provano a leggere un numero da una stringa e ritornano ciò che sono riusciuti ad estrarre prima di interrompersi.
443+
- Utilizzate parseInt/parseFloat per un conversione "soft", i quali provano a leggere un numero da una stringa e ritornano ciò che sono riusciti ad estrarre prima di interrompersi.
444444

445445
Per i numeri con la virgola:
446446

1-js/09-classes/04-private-protected-properties-methods/article.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ class CoffeeMachine {
116116
let coffeeMachine = new CoffeeMachine(100);
117117

118118
// aggiungiamo acqua
119-
coffeeMachine.waterAmount = -10; // Errore: valore dell'acqua negativo
119+
coffeeMachine.waterAmount = -10; // _waterAmount diventerà 0, non -10
120120
```
121121

122122
Ora l'accesso è sotto controllo, quindi non è più possibile impostare la quantità d'acqua ad un valore negativo.

1-js/11-async/01-callbacks/article.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@
22

33
# Introduzione: callbacks
44

5-
```warn header="Utilizeremo i metodi browser in questi esempi"
6-
Per dimostrare l'utilizzo di callbacks, promise ed altri concetti astratti, utilizzeremo alcuni metodi del browser: nello specifico, caricamento di script e sempliici manipolazioni del documento.
5+
```warn header="Utilizzeremo i metodi browser in questi esempi"
6+
Per dimostrare l'utilizzo di callbacks, promise ed altri concetti astratti, utilizzeremo alcuni metodi del browser: nello specifico, caricamento di script e semplici manipolazioni del documento.
77
88
Se questi metodi non vi sono familiari, e il loro utilizzo negli esempi vi risulta di difficile comprensione, potreste voler leggere un paio di capitolo della [prossima parte](/document) del tutorial.
99
10-
Anche se, povreremo a mantenere le spiegazioni più chiare possibili. Non ci sarà nulla di realmente complesso dal punto di vista del browser.
10+
Anche se, proveremo a mantenere le spiegazioni più chiare possibili. Non ci sarà nulla di realmente complesso dal punto di vista del browser.
1111
```
1212

1313
Molte funzioni vengono fornite da ambienti JavaScript che permettono di schedulare azioni *asincrone*. In altre parole, azioni che iniziano ora, ma finiranno in un secondo momento.
@@ -28,7 +28,7 @@ function loadScript(src) {
2828
}
2929
```
3030

31-
Lo scopo della funzione è quello di caricare un nuovo script. Quando aggiunge il tag `<script src="…">` al documento, il browser lo caricherà ed eseguirà.
31+
La funzione inserisce nel documento il nuovo script creato dinamicamente `<script src="…">` con il dato `src`. Il browser eseguità automaticamente il caricamento ed una volta terminato eseguirà lo script.
3232

3333
Possiamo usare la funzione in questo modo:
3434

@@ -37,7 +37,7 @@ Possiamo usare la funzione in questo modo:
3737
loadScript('/my/script.js');
3838
```
3939

40-
La funzione è chiamata "asincronamente", perché l'azione (il caricamento dello script) non finirà adesso ma in seguito.
40+
La funzione è chiamata in modo asincrono, perché l'azione (il caricamento dello script) non finirà adesso ma in seguito.
4141

4242
Se c'è del codice sotto `loadScript(…)`, non dovrà attender fino al caricamento dello script.
4343

@@ -103,12 +103,12 @@ function loadScript(src, callback) {
103103
*!*
104104
loadScript('https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.2.0/lodash.js', script => {
105105
alert(`Cool, the ${script.src} is loaded`);
106-
alert( _ ); // funzione dichiatata nello script caricato
106+
alert( _ ); // funzione dichiarata nello script caricato
107107
});
108108
*/!*
109109
```
110110

111-
Questo è lo stile di programmazione asincrona "callback-based". Una funzione che fa qualcosa asincronamente dovrebbe prevedere un argomento `callback` in cui mettiamo la funzione da eseguire al completamento dell'operazione asincrona.
111+
Questo è lo stile di programmazione asincrona "callback-based". Una funzione che fa qualcosa in modo asincrono dovrebbe prevedere un argomento `callback` in cui mettiamo la funzione da eseguire al completamento dell'operazione asincrona.
112112

113113
In questo esempio lo abbiamo fatto in `loadScript` ma, ovviamente, è un approccio generale.
114114

1-js/11-async/05-promise-api/article.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ let promise = Promise.all([...promises...]);
1818

1919
`Promise.all` accetta un array di promise (tecnicamente si può usare qualsiasi iterabile, ma solitamente si usa un array) e ritorna una nuova promise.
2020

21-
La nuova promise risolve (resolves) quando tutte le promise elencate sono ferme (settled) ed ha un array dei loro risultati (?).
21+
La nuova promise si risolve quando tutte le promise elencate vengono risolte, e l'array dei loro risultati diventa il risultato finale.
2222

2323
Per esempio, il `Promise.all` sotto si ferma (settles) dopo 3 secondi, ed il suo risultato è un array `[1, 2, 3]`:
2424

2-ui/3-event-details/7-keyboard-events/article.md

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -139,30 +139,39 @@ Ora un esempio: il seguente campo `<input>` si aspetta un numero di telefono, qu
139139
```html autorun height=60 run
140140
<script>
141141
function checkPhoneKey(key) {
142-
return (key >= '0' && key <= '9') || key == '+' || key == '(' || key == ')' || key == '-';
142+
return (key >= '0' && key <= '9') || ['+','(',')','-'].includes(key);
143143
}
144144
</script>
145145
<input *!*onkeydown="return checkPhoneKey(event.key)"*/!* placeholder="Inserire un numero di telefono" type="tel">
146146
```
147147

148+
Qui il gestore `onkeydown` utilizza `checkPhoneKey` per controllare i testi premuti. Se sono validi (da `0..9` o uno tra `+-()`), allora ritorna `true`, altrimenti `false`.
149+
150+
Come sappiamo, il valore `false` restituito da un gestore di evento, assegnato usando un attributo o una proprietà DOM, come in questo caso, previene l'azione default, quindi non appare nulla in `<input>` per i tasti che non passano il tets. (Il valore `true` restituito non influenza nulla, conta solo la restituzione di `false`)
151+
148152
È interessante notare che i tasti speciali, come `key:Backspace`, `key:Left`, `key:Right`, `key:Ctrl+V`, non funzionano nel campo input. Questo è un effetto collaterale delle restrizioni del filtro `checkPhoneKey`.
149153

150-
Facciamolo "rilassare" un attimo:
154+
Rendiamolo un po' più rilassato permettendo i tasti freccia `key:Left`, `key:Right` e `key:Delete`, `key:Backspace`::
151155

156+
Please note that special keys, such as `key:Backspace`, `key:Left`, `key:Right`, do not work in the input. That's a side-effect of the strict filter `checkPhoneKey`. These keys make it return `false`.
157+
158+
Let's relax the filter a little bit by allowing arrow keys `key:Left`, `key:Right` and `key:Delete`, `key:Backspace`:
152159

153160
```html autorun height=60 run
154161
<script>
155162
function checkPhoneKey(key) {
156-
return (key >= '0' && key <= '9') || key == '+' || key == '(' || key == ')' || key == '-' ||
157-
key == 'ArrowLeft' || key == 'ArrowRight' || key == 'Delete' || key == 'Backspace';
163+
return (key >= '0' && key <= '9') ||
164+
['+','(',')','-',*!*'ArrowLeft','ArrowRight','Delete','Backspace'*/!*].includes(key);
158165
}
159166
</script>
160167
<input onkeydown="return checkPhoneKey(event.key)" placeholder="Phone, please" type="tel">
161168
```
162169

163170
Adesso le frecce e il tasto cancella funzionano.
164171

165-
...Tuttavia, siamo ancora in grado di inserire qualunque valore, usando il mouse, attraverso la funzionalità tasto destro + Incolla. Quindi il filtro non è al 100% affidabile. Volendo, possiamo lasciarlo così, dato che funzionerà la maggior parte delle volte. Un approccio alternativo, invece, potrebbe essere quello di tenere traccia dell'evento `input`, che scaturisce dopo ogni modifica al campo di testo. In questo modo possiamo sempre verificare il nuovo valore ed evidenziarlo/modificarlo se non ritenuto valido.
172+
Anche se abbiamo il filtro chiave, è comunque possibile inserire qualsiasi cosa utilizzando il mouse e facendo clic con il pulsante destro del mouse + Incolla. I dispositivi mobili forniscono altri mezzi per immettere valori. Quindi il filtro non è affidabile al 100%.
173+
174+
L'approccio alternativo sarebbe quello di tenere traccia dell'evento `oninput`, che si attiva *dopo* qualsiasi modifica. Lì possiamo controllare il nuovo `input.value` e modificarlo/evidenziare `<input>` quando non è valido. Oppure possiamo usare entrambi i gestori di evento insieme.
166175

167176
## Eredità
168177

6-data-storage/01-cookie/article.md

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,7 @@ Lasciamo il compito in questione al lettore come esercizio. Inoltre, alla fine d
4444

4545
## Scrivere nel document.cookie
4646

47-
Possiamo scrivere nel `document.cookie`. Ma fate attenzione che questa non è una proprietà, ma piuttosto un metodo di accesso (getter/setter) per leggere e scrivere.
48-
Un assegnazione a quest'ultimo è trattato in modo particolare.
49-
47+
Possiamo scrivere nel `document.cookie`. Ma fate attenzione che questa non è una proprietà, ma piuttosto un metodo di accesso [accessor (getter/setter)](info:property-accessors). Un assegnazione a quest'ultimo è trattato in modo particolare.
5048

5149
**Un'operazione di scritture nel `document.cookie` aggiorna solo i cookies menzionati all interno del documento stesso, ma non affligge altri cookies.**
5250

6-data-storage/01-cookie/cookie.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
function getCookie(name) {
22
let matches = document.cookie.match(new RegExp(
3-
"(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"
3+
"(?:^|; )" + name.replace(/([.$?*|{}()[\]\\/+^])/g, '\\$1') + "=([^;]*)"
44
));
55
return matches ? decodeURIComponent(matches[1]) : undefined;
66
}

0 commit comments

Comments
 (0)