Skip to content

Commit f00762c

Browse files
authored
Merge pull request #3 from Dorin-David/article/11-logical-operators
Article/11 logical operators
2 parents e2b742e + 698314b commit f00762c

File tree

12 files changed

+89
-100
lines changed

12 files changed

+89
-100
lines changed

1-js/01-getting-started/1-intro/article.md

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -10,17 +10,17 @@ I programmi che sfruttano questo linguaggio vengono chiamati *script*. Possono e
1010

1111
Gli script vengono scritti ed eseguiti come testo semplice. Per questo non richiedono alcuna fase di preparazione o compilazione per essere eseguiti.
1212

13-
In questo aspetto, JavaScript è molto differente da un altro linguaggio chiamato [Java](https://en.wikipedia.org/wiki/Java_(programming_language)).
13+
Sotto questo aspetto, JavaScript è molto differente da un altro linguaggio chiamato [Java](https://en.wikipedia.org/wiki/Java_(programming_language)).
1414

1515
```smart header="Perché si chiama <u>Java</u>Script?"
16-
In origine JavaScript aveva un altro nome: "LiveScript". In quel periodo Java era molto popolare, per questo si è pensato che identificare questo linguaggio come il "fratello minore" di Java potesse aiutare nella sua diffusione.
16+
In origine JavaScript aveva un altro nome: "LiveScript". In quel periodo Java era molto popolare, per questo si è pensato che identificare Javascript come il "fratello minore" di Java potesse aiutare alla sua diffusione.
1717
18-
Evolvendosi, JavaScript è diventato un linguaggio completamente indipendente, con delle specifiche personali chiamate [ECMAScript](http://en.wikipedia.org/wiki/ECMAScript), e adesso non ha quasi nulla in comune con Java.
18+
Evolvendosi, JavaScript è diventato un linguaggio completamente indipendente, le cui specifiche sono definite da [ECMAScript](http://en.wikipedia.org/wiki/ECMAScript), e adesso non ha quasi nulla in comune con Java.
1919
```
2020

2121
Attualmente, JavaScript può essere eseguito non solo nei browser, ma anche nei server web e in altri ambienti che supportano il [motore JavaScript](https://en.wikipedia.org/wiki/JavaScript_engine) (JavaScript engine).
2222

23-
Il browser ha un suo motore JavaScript integrato, chiamato "JavaScript Virtual Machine".
23+
Il browser ha un suo motore JavaScript integrato, chiamato alle volte "JavaScript Virtual Machine".
2424

2525
Esistono altri motori JavaScript, tra cui:
2626

@@ -36,49 +36,49 @@ Il funzionamento di questi motori è complicato, ma i concetti alla base sono se
3636
3737
3838
1. I motori (integrati nei browser) leggono ("analizzano") lo script.
39-
2. Successivamente convertono ("compilano") lo script in linguaggio macchina.
40-
3. Infine il codice macchina viene eseguito, molto rapidamente.
39+
2. Successivamente convertono ("compilano") lo script nel linguaggio della macchina.
40+
3. Infine il "codice macchina" viene eseguito, molto rapidamente.
4141
42-
Il motore applica ottimizzazioni ad ogni passo del processo. Anche durante l'esecuzione dello script già compilato, analizza il flusso dati e applica ottimizzazioni al codice macchina. Nonostante tutto l'esecuzione dello script risulta essere molto veloce.
42+
Il motore ottimizza il codice ad ogni passaggio del processo, anche durante l'esecuzione dello script già compilato, quando ne analizza il flusso dati. Nonostante tutto l'esecuzione dello script risulta essere molto veloce.
4343
```
4444

4545
## Cosa può fare JavaScript a livello browser?
4646

47-
JavaScript al giorno d'oggi è un linguaggio di programmazione "sicuro". Non consente alcun accesso di basso livello alla memoria o alla CPU, questo perché è stato creato con lo scopo di funzionare nei browser, che non richiedono questo tipo di privilegi.
47+
JavaScript, al giorno d'oggi, è un linguaggio di programmazione "sicuro". Non consente alcun accesso di basso livello alla memoria o alla CPU. Questo perché è stato creato con lo scopo di funzionare nei browser, che non richiedono questi tipi di privilegi.
4848

4949
Le capacità di JavaScript dipendono molto dall'ambiente in cui lo si esegue. Ad esempio, [Node.js](https://wikipedia.org/wiki/Node.js) supporta funzioni che consentono a JavaScript di scrivere/leggere file, eseguire richieste web, etc.
5050

51-
JavaScript integrato nel browser può fare qualsiasi cosa legata alla manipolazione della pagina, interagire con l'utente e con il server.
51+
Integrato nel browser Javascript può fare qualsiasi cosa legata alla manipolazione della pagina, all'interazione con l'utente e con il server.
5252

5353
Ad esempio, è possibile:
5454

5555
- Aggiungere HTML alla pagina, cambiare il contenuto esistente, modificare lo stile.
5656
- Reagire alle azioni dell'utente, click del mouse, movimenti del cursore, input da tastiera.
5757
- Inviare richieste al server tramite la rete, caricare e scaricare file (con l'ausilio di[AJAX](https://en.wikipedia.org/wiki/Ajax_(programming)) e [COMET](https://en.wikipedia.org/wiki/Comet_(programming))).
58-
- Prelevare e impostare cookies, interrogare l'utente e mostrare messaggi.
58+
- Prelevare e impostare cookies, interrogare l'utente, mostrare messaggi.
5959
- Memorizzare i dati client-side ("memorizzazione locale").
6060

6161
## Cosa NON può fare JavaScript a livello browser?
6262

63-
Le possibilità di JavaScript nel browser sono limitate per la sicurezza dell'utente. L'intento è di prevenire che una pagina "maligna" tenti di accedere alle informazioni personali o di danneggiare i dati degli utenti.
63+
Per la sicurezza dell'utente, le possibilità di JavaScript nel browser sono limitate. L'intento è di prevenire che una pagina "maligna" tenti di accedere alle informazioni personali o di danneggiare i dati degli utenti.
6464

65-
Degli esempi di queste restrizioni possono essere:
65+
Esempi di queste restrizioni possono essere:
6666

67-
- JavaScript in una pagina web non può leggere o scrivere in qualsiasi file nell'hard disk, ne copiare o eseguire programmi. Non ha accesso diretto alle funzioni di sistema operativo.
67+
- JavaScript, in una pagina web, non può leggere o scrivere in qualsiasi file nell'hard disk, copiare o eseguire programmi. Non ha accesso diretto alle funzioni del sistema operativo.
6868

6969
I moderni browser gli consentono di lavorare con i file, sempre con un accesso limitato e comunque solo se il comando proviene da utente, come il "dropping" di un file nella finestra del browser, o con la selezione tramite il tag `<input>`.
7070

71-
Ci sono anche funzionalità che consentono di interagire con la camera/microfono e altri dispositivi, ma in ogni caso richiedono il permesso esplicito dell'utente. Quindi una pagina con JavaScript abilitato non può attivare la web-cam di nascosto, osservare i nostri comportamenti e inviare le informazioni all' [NSA](https://en.wikipedia.org/wiki/National_Security_Agency).
72-
- Pagine o schede diverse generalmente non sono a conoscenza dell'esistenza delle altre. In certi casi può però capitare, ad esempio che una finestra ne apra un'altra tramite JavaScript. Ma anche in questo caso, il codice JavaScript non può accedere all'altra pagina se non appartiene allo stesso sito (stesso dominio, protocollo o porta).
71+
Ci sono anche funzionalità che consentono di interagire con la camera/microfono e altri dispositivi, ma in ogni caso richiedono il permesso esplicito dell'utente. Quindi una pagina con JavaScript abilitato non può attivare la web-cam di nascosto, osservare i nostri comportamenti e inviare informazioni alla [CIA](https://it.wikipedia.org/wiki/Central_Intelligence_Agency).
72+
- Pagine o schede diverse generalmente non sono a conoscenza dell'esistenza delle altre. In certi casi, tuttavia, può capitare; ad esempio quando una finestra ne apre un'altra tramite JavaScript. Ma anche in questo caso, il codice JavaScript non può accedere all'altra pagina se non appartiene allo stesso sito (stesso dominio, protocollo o porta).
7373

7474
Questa viene definita la "Same Origin Policy" ("Politica di Appartenenza alla Stessa Origine"). Per poter aggirare questo limite, *entrambe le pagine* devono contenere uno speciale codice JavaScript che consente di gestire lo scambio di dati.
7575

76-
Questa limitazione è sempre dovuta alla sicurezza dell'utente. Una pagina proveniente da `http://anysite.com` che è stata aperta da un utente, non deve essere in grado di accedere ad un'altra scheda del browser con l'URL `http://gmail.com` (per esempio) e rubare le informazioni.
77-
- JavaScript può facilmente comunicare con il server da cui la pagina proviene. Ma la sua abilità di ricevere dati da altri siti/domini è limitata. Sebbene sia possibile, effettuare delle richieste esplicite (passate tramite HTTP headers) dall'indirizzo remoto. Ancora una volta, queste sono limitazioni dovute alla sicurezza.
76+
Questa limitazione è sempre dovuta alla sicurezza dell'utente. Una pagina proveniente da `http://anysite.com` che è stata aperta da un utente, ad esempio, non deve essere in grado di accedere ad un'altra scheda del browser con l'URL `http://gmail.com` e rubarne le informazioni.
77+
- JavaScript può facilmente comunicare con il server da cui la pagina proviene. Ma la sua abilità di ricevere dati da altri siti/domini è limitata. Sebbene sia possibile, sono richieste esplicite autorizzazioni (passate tramite HTTP headers) dall'indirizzo remoto. Ancora una volta, una limitazione dovuta alla sicurezza.
7878

7979
![](limitations.svg)
8080

81-
Queste limitazioni non esistono se JavaScript viene eseguito fuori dal browser, ad esempio in un server. I browser moderni permettono l'installazione di plugin ed estensioni che consentono di aumentare i permessi.
81+
Queste limitazioni non si pongono se JavaScript viene eseguito fuori dal browser, ad esempio in un server. I browser moderni permettono l'installazione di plugin ed estensioni che consentono di estendere vari permessi.
8282

8383
## Cosa rende JavaScript unico?
8484

@@ -87,7 +87,7 @@ Ci sono almeno *tre* cose che rendono JavaScript cosi unico:
8787
```compare
8888
+ Completa integrazione con HTML/CSS.
8989
+ Operazioni semplici vengono eseguite semplicemente.
90-
+ Supportato dai maggiori browser ed è attivo di default.
90+
+ Supportato dai maggiori browser ed integrato di default.
9191
```
9292
JavaScript è l'unica tecnologia in ambiente browser che combina queste tre caratteristiche.
9393

@@ -99,25 +99,25 @@ Quando si ha in programma di imparare una nuova tecnologia, è fondamentale veri
9999

100100
La sintassi di JavaScript non soddisfa le necessità di tutti. Alcune persone necessitano di caratteristiche differenti.
101101

102-
Questo è prevedibile, poiché i progetti e i requisiti sono diversi di persona in persona.
102+
Questo è prevedibile, poiché i progetti e i requisiti sono diversi da persona a persona.
103103

104-
Recentemente, per questo motivo, sono nati molti nuovi linguaggi che vengono *convertiti* in JavaScript, prima di essere eseguiti nel browser.
104+
Recentemente, per questo motivo, sono nati molti nuovi linguaggi che vengono *convertiti* in JavaScript prima di essere eseguiti nel browser.
105105

106-
Gli strumenti moderni rendono la conversione molto veloce e pulita, consentendo agli sviluppatori di programmare in un altro linguaggio e di auto-convertirlo "sotto il cofano".
106+
Gli strumenti moderni rendono la conversione molto veloce e pulita, consentendo agli sviluppatori di programmare in un altro linguaggio e di auto-convertirlo *under the hood*.
107107

108108
Esempi di alcuni linguaggi:
109109

110110
- [CoffeeScript](http://coffeescript.org/) è un linguaggio che introduce una sintassi semplificata che consente di scrivere codice più leggibile. Amato dagli sviluppatori provenienti da Ruby.
111111
- [TypeScript](http://www.typescriptlang.org/) si occupa di aggiungere la "tipizzazione", per semplificare lo sviluppo e supportare sistemi più complessi. E' stato sviluppato da Microsoft.
112112
- [Flow](http://flow.org/) anche'esso aggiunge la tipizzazione dei dati, ma in un modo differente. Sviluppato da Facebook.
113-
- [Dart](https://www.dartlang.org/) è un linguaggio autonomo che possiede il suo motore che esegue in ambienti esterni al browser (come mobile apps). E' stato introdotto da Google come alternativa a JavaScript, ma attualmente, i browser richiedono la conversione in JavaScript, proprio come i precedenti.
114-
- [Brython](https://brython.info/) è un traduttore, che codice scritto in Python in codice JavaScript, consente quindi di scrivere applicazioni in Python senza utilizzare JavaScript.
113+
- [Dart](https://www.dartlang.org/) è un linguaggio autonomo che possiede il suo motore, che esegue in ambienti esterni al browser (come mobile apps). E' stato introdotto da Google come alternativa a JavaScript, ma attualmente i browser richiedono la conversione in JavaScript, proprio come i precedenti.
114+
- [Brython](https://brython.info/) è un *transpiler*, scritto in Python, che consente di scrivere applicazioni in quest'ultimo senza utilizzare JavaScript.
115115
- [Kotlin](https://kotlinlang.org/docs/reference/js-overview.html) è un moderno, conciso e sicuro linguaggio di programmazione mirato ai browsers o a Node.
116116

117-
Ce ne sono molti altri. Ovviamente se utilizziamo uno di questi linguaggi, dovremmo almeno conoscere JavaScript, per comprendere cosa stiamo facendo.
117+
Ce ne sono molti altri. Ovviamente, per comprendere cosa stiamo facendo, se utilizziamo uno di questi linguaggi dovremmo altresì conoscere JavaScript.
118118

119119
## Riepilogo
120120

121-
- JavaScript è stato creato come linguaggio unico per i browser, ma attualmente viene utilizzato con efficacia in molti altri ambienti.
122-
- Attualmente JavaScript si trova in una posizione unica come linguaggio più diffuso per lo sviluppo web, grazie ad una completa integrazione con HTML/CSS.
123-
- Ci sono molti linguaggio che possono essere "convertiti" in JavaScript che risolvono certe esigenze. E' fortemente consigliato di leggere brevemente le funzionalità di alcuni di essi, però solo dopo essersi focalizzati su JavaScript.
121+
- JavaScript è stato creato specificamente per i browser, ma attualmente viene utilizzato con efficacia in molti altri ambienti.
122+
- Attualmente, per quanto riguarda lo sviluppo del web, JavaScript si trova in una posizione unica grazie ad una completa integrazione con HTML/CSS.
123+
- Ci sono molti linguaggi che possono essere "convertiti" in JavaScript; essi provvedono le stesse funzionalità e risolvono gli stessi problemi. E' fortemente consigliato di leggere brevemente le funzionalità di alcuni di essi, dopo avert studiato e compreso JavaScript.

1-js/02-first-steps/11-logical-operators/1-alert-null-2-undefined/task.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ importance: 5
22

33
---
44

5-
# Qual'e il risultato dell'OR?
5+
# Qual è il risultato dell'OR?
66

7-
Che risultato restituirà il codice qui sotto?
7+
Quale sarà il risultato del codice sotto?
88

99
```js
1010
alert( null || 2 || undefined );

1-js/02-first-steps/11-logical-operators/2-alert-or/solution.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@ La risposta: prima `1`, poi `2`.
44
alert( alert(1) || 2 || alert(3) );
55
```
66

7-
La chiamata ad `alert` non ritorna alcun valore. In altre parole, ritorna `undefined`.
7+
La chiamata ad `alert` non ritorna alcun valore; dunque `undefined`.
88

9-
1. Il primo OR `||` valuta il suo operando sinistro `alert(1)`. Questo mostra il primo messaggio con `1`.
10-
2. La funzione `alert` ritorna `undefined`, quindi OR prosegue con il secondo operando alla ricerca di un valore vero.
9+
1. Il primo OR `||` valuta l'operando sinistro `alert(1)`. Questo mostra il primo messaggio, `1`.
10+
2. La funzione `alert` ritorna `undefined`, quindi OR prosegue con il secondo operando, alla ricerca di un valore vero.
1111
3. Il secondo operando `2` è vero; quindi l'esecuzione si ferma, viene ritornato `2` e mostrato dall'alert esterno.
1212

1313
Non ci sarà il `3`, perchè la valutazione non arriva a `alert(3)`.

1-js/02-first-steps/11-logical-operators/2-alert-or/task.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ importance: 3
22

33
---
44

5-
# Qual'è il risultato dell'alert con l'OR?
5+
# Qual è il risultato dell'alert con l'OR?
66

7-
Cosa stampa il codice qui sotto?
7+
Cosa mostrerà il codice sotto?
88

99
```js
1010
alert( alert(1) || 2 || alert(3) );

1-js/02-first-steps/11-logical-operators/3-alert-1-null-2/task.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ importance: 5
22

33
---
44

5-
# Qual'è il risultato dell'AND?
5+
# Qual è il risultato dell'AND?
66

77
Cosa mostrerà l'esecuzione di questo codice?
88

1-js/02-first-steps/11-logical-operators/4-alert-and/solution.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ La risposta è: `1`, e poi `undefined`.
44
alert( alert(1) && alert(2) );
55
```
66

7-
La chiamata `alert` ritorna `undefined` (mostra solo un messaggio, quindi non ha nessuna valore di ritorno significativo).
7+
La chiamata `alert` ritorna `undefined` (mostra solo un messaggio, quindi non ha nessuna valore significativo di ritorno).
88

9-
Per questo `&&` valuta l'operando di sinistra (che mostra `1`), e si ferma immediatamente, perchè `undefined` è un valore falso. AND `&&` cerca un valore falso e lo ritorna.
9+
Per questo `&&`, valutato l'operando di sinistra (che mostra `1`), si ferma: `undefined` è un valore falso e `&&` lo ritorna immediatamente.
1010

1-js/02-first-steps/11-logical-operators/4-alert-and/task.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ importance: 3
22

33
---
44

5-
# Qual'è il risultato degli alert?
5+
# Qual è il risultato degli alert?
66

77
Cosa mostrerà questo codice?
88

1-js/02-first-steps/11-logical-operators/6-check-if-in-range/task.md

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,4 @@ importance: 3
44

55
# Controlla l'intervallo
66

7-
Scrivi una condizione `if` per controllare che `age` sia compresa tra `14` e `90` estremi inclusi.
8-
9-
"Inclusi" significa che `age` può valere anche `14` o `90`.
7+
Scrivi una condizione `if` per controllare che `age` sia compresa tra `14` e `90` (inclusi: `age` può valere anche `14` o `90`).

1-js/02-first-steps/11-logical-operators/7-check-if-out-range/task.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ importance: 3
22

33
---
44

5-
# Controlla l'intervallo esternamente
5+
# Controlla l'intervallo fuori
66

7-
Scrivi una condizione `if` che controlli la variabile `age`, questa NON deve essere compresa tra `14` e `90`, estremi inclusi.
7+
Scrivi una condizione `if` che controlli la variabile `age`; questa NON deve essere compresa tra `14` e `90` (inclusi).
88

99
Scrivi due varianti: la prima utilizzando NOT `!`, la seconda -- senza.

1-js/02-first-steps/11-logical-operators/8-if-question/task.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@ importance: 5
22

33
---
44

5-
# Una indovinello con "if"
5+
# Un indovinello con "if"
66

77
Quali di questi `alert` verranno eseguiti?
88

9-
Quale sarà il risultato dell'espressione all'interno di `if(...)`?
9+
Quale sarà il risultato delle espressioni all'interno dei vari `if(...)`?
1010

1111
```js
1212
if (-1 || 0) alert( 'first' );

0 commit comments

Comments
 (0)