Introduzione

I tipi di dati (data type) vengono utilizzati per classificare un particolare tipo di dati nei linguaggi di programmazione. Ad esempio, un numero e una stringa di caratteri sono diversi tipi di dati che verranno trattati in modo diverso da JavaScript.

Questo è importante perché il tipo di dati specifico che usi determinerà quali valori puoi assegnargli e cosa puoi fargli. Ciò significa che, per essere in grado di eseguire operazioni con variabili in JavaScript, è importante comprendere il tipo di dati di una determinata variabile.

In questo tutorial, analizzeremo come funzionano i tipi di dati in JavaScript, nonché i tipi di dati importanti nativi del linguaggio.

Dynamic Typing

JavaScript ha tipi di dati dinamici, il che significa che il controllo del tipo viene eseguito in fase di esecuzione anziché in fase di compilazione. I tipi di dati di Python sono anche tipizzati in modo dinamico.

Con i linguaggi tipizzati dinamicamente, una variabile con lo stesso nome può essere utilizzata per contenere diversi tipi di dati.

Ad esempio, la variabile t, definita come variabile dalla parola chiave let (nota che let mantiene una determinata variabile limitata nella funzione), può essere assegnata per contenere diversi tipi di dati o può essere inizializzata ma lasciata indefinita:

let t = 16;         // t is a number
let t = "Teresa";   // t is a string
let t = true;       // t is a Boolean
let t;              // t is undefined

Ciascuna delle variabili t dell'esempio precedente può essere impostata su qualsiasi tipo di dati disponibile in JavaScript; non devono essere dichiarati esplicitamente con un tipo di dati prima di essere utilizzati.

Numeri

JavaScript ha un solo tipo di numero, non esiste una designazione separata per numeri interi e numeri in virgola mobile. Per questo motivo, i numeri possono essere scritti in JavaScript con o senza decimali:

let num1 = 93;
let num2 = 93.00;

In entrambi i casi precedenti, il tipo di dati è un numero ed è lo stesso indipendentemente dal fatto che il numero abbia o meno punti decimali.

La notazione esponenziale scientifica può essere utilizzata in JavaScript per abbreviare numeri molto grandi o piccoli, come negli esempi seguenti:

let num3 = 987e8;       // 98700000000
let num4 = 987e-8;      // 0.00000987

I numeri in JavaScript sono considerati precisi fino a 15 cifre. Ciò significa che i numeri verranno arrotondati dopo il raggiungimento della sedicesima cifra:

let num5 = 999999999999999;     // remains as 999999999999999
let num6 = 9999999999999999;    // rounded up to 10000000000000000

Oltre a rappresentare i numeri, il tipo di numero in JavaScript ha anche tre valori simbolici disponibili:

  • Infinity - un valore numerico che rappresenta un numero positivo che si avvicina all'infinito
  • -Infinity - un valore numerico che rappresenta un numero negativo che si avvicina all'infinito
  • NaN - un valore numerico che rappresenta un non-numero, che sta per "not a number"

Infinity o -Infinity verrà restituito se si calcola un numero esterno al numero più grande possibile disponibile in JavaScript. Ciò si verificherà anche per valori non definiti, come quando si divide per zero:

let num7 = 5 / 0;   // will return Infinity
let num8 = -5 / 0;  // will return -Infinity

In termini tecnici, Infinity verrà visualizzato quando un numero supera il numero 1.797693134862315E+308, che rappresenta il limite superiore in JavaScript.

Allo stesso modo, -Infinity verrà visualizzato quando un numero supera il limite inferiore di -1.797693134862316E+308.

Il numero Infinity può essere utilizzato anche nei loop:

while (num9 != Infinity) {
    // Code here will execute through num9 = Infinity
}

Per i numeri che non sono numeri legali, verrà visualizzato NaN. Se si tenta di eseguire un'operazione matematica su un numero e un valore non numerico, NaN verrà restituito. Questo è il caso nell'esempio seguente:

let x = 20 / "Shark";   // x will be NaN

Poiché il numero 20 non può essere diviso per la stringa "Shark" perché non può essere valutato come numero, il valore restituito per la variabile x è NaN.

Tuttavia, se una stringa può essere valutata come valore numerico, l'espressione matematica può essere eseguita in JavaScript:

let y = 20 / "5";   // y will be 4

Nell'esempio sopra, poiché la stringa "5" può essere valutata come un valore numerico in JavaScript, viene trattata come tale e funziona con l'operatore matematico per la divisione /.

Quando si assegna il valore NaN a una variabile utilizzata in un'operazione, si otterrà il valore di NaN, anche quando l'altro operando è un numero legale:

let a = NaN;
let b = 37;
let c = a + b;  // c will be NaN

Esiste un solo tipo di dati numerico in JavaScript. Quando si lavora con i numeri, qualsiasi numero inserito verrà interpretato come il tipo di dati per i numeri; non è necessario dichiarare quale tipo di tipo di dati si sta inserendo perché JavaScript viene digitato in modo dinamico.

Stringhe

Una stringa è una sequenza di uno o più caratteri (lettere, numeri, simboli). Le stringhe sono utili in quanto rappresentano dati testuali.

In JavaScript, le stringhe esistono tra virgolette singole ' o doppie ", quindi per creare una stringa, racchiudere una sequenza di caratteri tra virgolette:

let singleQuotes = 'This is a string in single quotes.';
let doubleQuotes = "This is a string in double quotes.";

Puoi scegliere di utilizzare virgolette singole o doppie, ma qualunque sia la tua decisione, dovresti rimanere coerente all'interno di un programma.

Il programma "Hello, World!" dimostra come una stringa può essere utilizzata nella programmazione, poiché i caratteri che compongono la frase Hello, World! di alert() seguito sono una stringa.

<!DOCTYPE HTML>
<html>
<head>
<script>
function helloFunction() {
    alert("Hello, World!");
}
</script>
</head>
<body>
<p><button onclick="helloFunction()">Click me</button></p>
</body>
</html>
hello.html

Quando eseguiamo il codice e facciamo clic sul pulsante Click me, verrà visualizzato un popup con il seguente output:

Hello, World!

Come con altri tipi di dati, possiamo memorizzare stringhe in variabili:

let hw = "Hello, World!";

E visualizza la stringa in alert()chiamando la variabile:

...
<script>
let hw = "Hello, World!";
function helloFunction() {
    alert(hw);
}
</script>
...
hello.html
Hello, World!

Esistono molte operazioni che possiamo eseguire sulle stringhe all'interno dei nostri programmi al fine di manipolarle per ottenere i risultati che stiamo cercando. Le stringhe sono importanti per la comunicazione di informazioni all'utente e per l'utente di comunicare nuovamente le informazioni al programma.

Booleani

Il tipo di dati booleano può essere uno di due valori, vero o falso. I booleani sono usati per rappresentare i valori di verità associati al ramo logico della matematica, che informa gli algoritmi nell'informatica.

Ogni volta che vedi il tipo di dati Booleano, inizierà con una B maiuscola perché prende il nome dal matematico George Boole.

Molte operazioni in matematica ci danno risposte che valutano vero o falso:

più grande di

  • 500> 100 true
  • 1> 5 false

meno di

  • 200 <400 true
  • 4 <2 false

pari

  • 5 = 5 true
  • 500 = 400 false

Come con altri tipi di dati, possiamo memorizzare un valore booleano in una variabile:

let myBool = 5 > 8; // false

Poiché 5 non è maggiore di 8, la variabile myBool ha il valore di false.

Man mano che scrivi più programmi in JavaScript, acquisirai maggiore familiarità con il modo in cui funzionano i booleani e in che modo diverse funzioni e operazioni che valutano il vero o il falso possono cambiare il corso del programma.

Array

Un array può contenere più valori all'interno di una singola variabile. Ciò significa che è possibile contenere un elenco di valori all'interno di un array e scorrere attraverso di essi.

Ogni elemento o valore all'interno di un array viene chiamato elemento. È possibile fare riferimento agli elementi di un array utilizzando un numero indice.

Proprio come le stringhe sono definite come caratteri tra virgolette, le matrici sono definite con valori tra parentesi quadre [ ].

Un array di stringhe, ad esempio, è simile al seguente:

let fish = ["shark", "cuttlefish", "clownfish", "eel"];

Se chiamiamo la variabile fish, riceveremo il seguente output:

["shark", "cuttlefish", "clownfish", "eel"]

Gli array sono un tipo di dati molto flessibile perché sono mutabili in quanto possono avere valori di elementi aggiunti, rimossi e modificati.

Oggetti

Il tipo di dati oggetto (object) JavaScript può contenere molti valori come coppie nome:valore (name:value). Queste coppie forniscono un modo utile per archiviare e accedere ai dati. La sintassi letterale dell'oggetto è composta da coppie nome:valori separate da due punti con parentesi graffe su entrambi i lati { }.

In genere utilizzato per contenere dati correlati, ad esempio le informazioni contenute in un ID, un oggetto JavaScript letterale si presenta così, con spazi bianchi tra le proprietà:

let noviello = {firstName:"Noviello", lastName:"Shark", color:"blue", location:"ocean"};

In alternativa, e specialmente per i letterali di oggetti con un alto numero di coppie nome:valore, possiamo scrivere questo tipo di dati su più righe, con uno spazio bianco dopo ogni due punti:

let noviello = {
    firstName: "Noviello",
    lastName: "Shark",
    color: "blue",
    location: "Ocean"
};

La variabile oggetto noviello in ciascuno degli esempi sopra ha 4 proprietà: firstName, lastName, color, e location. Questi sono ciascuno valori passati separati da due punti.

Lavorare con più tipi di dati

Sebbene ogni programma creato conterrà più tipi di dati, è importante tenere presente che generalmente si eseguiranno operazioni all'interno dello stesso tipo di dati. Cioè, eseguirai la matematica sui numeri o taglierai le stringhe.

Quando si utilizza un operatore che lavora su tipi di dati, come l'operatore + che può aggiungere numeri o concatenare stringhe, è possibile ottenere risultati imprevisti.

Ad esempio, quando si utilizza l'operatore + con numeri e stringhe insieme, i numeri verranno trattati come una stringa (quindi saranno concatenati), ma l'ordine dei tipi di dati influenzerà la concatenazione.

Pertanto, se si crea una variabile che esegue la seguente concatenazione, JavaScript interpreterà ogni elemento di seguito come una stringa:

let o = "Ocean" + 5 + 3;

Se chiami la variabile o, otterrai il seguente valore restituito:

Ocean53

Tuttavia, se si conduce con i numeri, i due numeri verranno aggiunti prima che vengano quindi interpretati come una stringa quando il runtime del programma raggiunge "Ocean", quindi il valore restituito sarà la somma dei due numeri concatenati con la stringa:

let p = 5 + 3 + "Ocean";
8Ocean

A causa di questi risultati imprevisti, probabilmente eseguirai operazioni e metodi all'interno di un tipo di dati anziché su di essi. JavaScript, tuttavia, non restituisce errori quando si mescolano tipi di dati, come fanno altri linguaggi di programmazione.

Conclusione

A questo punto, dovresti avere una migliore comprensione di alcuni dei principali tipi di dati disponibili per l'uso in JavaScript.