Introduzione a JavaScript

Nonostante il nome, JavaScript è correlato solo a Java in quanto i due hanno in comune similitudini sintattiche. Durante il suo sviluppo iniziale, la sintassi di JavaScript era di ispirazione dalla sintassi Java, ed era chiamato "LiveScript" alla prima sono disponibili in una versione beta di Netscape Navigator nel 1995, entrambi per allinearsi ad delle altre offerte denominate di Netscape e cenno al fatto che sia pubblicato nel browser. Microsoft ha rilasciato la propria implementazione di JavaScript, "JScript" poco dopo con Internet Explorer 3.0.

Netscape ha inviato questo lavoro in anteprima a Ecma International, un'organizzazione che sviluppa e pubblica standard tecnici, per formalizzare e descrivere in modo dettagliato il linguaggio di scripting deve essere compreso da altri browser. Nel 1997, Ecma Rilasciato a livello internazionale la normativa ECMA-262, che standardizza la prima versione di uno script chiamato ECMAScript. ECMAScript è lo standard che guida la creazione linguaggi di scripting più specifici, ad esempio il lavoro successivo di Microsoft JScript, ora obsoleto, JavaScript di Adobe e lo stesso JavaScript.

Questa distinzione è importante quando si analizzano aspetti e caratteristiche specifici JavaScript. "ES5" si riferisce al primo principale "controllo con versione" dell'editor standard ECMAScript nel 2009, a seguito di anni di sviluppo più frammentario. "ES6" (o "ES2015") è l'abbreviazione degli standard stabiliti dalla sesta edizione di ECMAScript, rilasciato nel 2015. Dopo ES6, le nuove edizioni del framework ECMAScript standard vengono rilasciati annualmente, con le modifiche e le aggiunte di ogni versione cui fa riferimento per anno come in "ES2016" o "ES2017".

Le regole di base

A differenza dei linguaggi compilati, JavaScript non viene tradotto dal codice scritto da una persona. in un formato che il browser possa comprendere. Uno script viene inviato al browser insieme ad asset come markup, immagini e fogli di stile, il browser la interpreta. esattamente come è stato scritto: una sequenza leggibile di caratteri Unicode, analizzati da sinistra a destra e dall'alto verso il basso.

Quando un interprete JavaScript riceve uno script, per prima cosa esegue lexical analysis, analisi della lunga stringa di caratteri che compone uno script e convertendolo nei seguenti elementi di input discreti:

  • Token
  • Caratteri di controllo del formato
  • Terminatori di riga
  • Commenti
  • Spazio vuoto (quasi significa sempre tabulazioni e spazi).

I risultati di uno script non vengono mantenuti dopo il ricaricamento o l'uscita da pagina corrente, a meno che tu non includa istruzioni esplicite per fare diversamente nei lo script.

A livello generale, le applicazioni JavaScript sono composte da istruzioni e espressioni.

Dichiarazioni

Un'istruzione è un'unità di istruzione composta da una o più righe di codice rappresentano un'azione. Ad esempio, puoi utilizzare la seguente istruzione per assegnare un valore a una variabile denominata myVariable:

let myVariable = 4;

myVariable;
> 4

Per essere interpretate correttamente, le istruzioni devono terminare con un punto e virgola. Tuttavia, questi I punti e virgola non sono sempre obbligatori quando scrivi JavaScript. Una funzionalità chiamata l'inserimento del punto e virgola automatico consente a una linea interruzione dopo un'istruzione completa verrà trattata come un punto e virgola se un'istruzione il punto e virgola provocherà un errore.

ASI è la correzione degli errori, non un aspetto permissivo di JavaScript stesso. Poiché fare troppo affidamento su questa correzione degli errori può portare a ambiguità che devi comunque terminare manualmente ogni istruzione con un punto e virgola.

Blocca istruzioni

Un'istruzione di blocco raggruppa un numero qualsiasi di istruzioni e dichiarazioni all'interno di una coppia di parentesi graffe ({}). Consente di combinare le istruzioni in posizioni in cui JavaScript ne prevede solo uno.

Spesso vedrai le istruzioni di blocco accanto istruzioni di flusso di controllo, ad esempio if:

if ( x === 2 ) {
  //some behavior;
}

Espressioni

Un'espressione è un'unità di codice che genera un valore e può quindi essere utilizzata ovunque sia previsto un valore. 2 + 2 è un'espressione che genera valore 4:

2 + 2;
> 4

L'"operatore di raggruppamento", una coppia corrispondente di parentesi che racchiudono, viene utilizzato raggruppa le parti di un'espressione per garantire che una parte dell'espressione venga valutate come una singola unità. Ad esempio, potresti usare un operatore di raggruppamento per sostituire l'ordine matematico delle operazioni, o per migliorare la leggibilità del codice:

2 + 2 * 4;
> 10

( 2 + 2 ) * 4;
> 16

let myVariable = ( 2 + 2 );

myVariable;
> 4

Digitazione debole

JavaScript è un linguaggio battuto poco, il che significa che un valore dati non richiede essere contrassegnati esplicitamente come tipi di dati specifici. A differenza di un linguaggio fortemente digitato, JavaScript può dedurre il tipo previsto da il contesto di un valore e convertilo in quel tipo. Questo processo è chiamato coercizione del tipo.

Ad esempio, se aggiungi un numero a un valore di stringa in una lingua fortemente digitata, come Python, il risultato è un errore:

>>> "1" + 1
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: cannot concatenate 'str' and 'int' objects

Anziché restituire un errore, JavaScript converte il valore numerico in una stringa e concatena i due valori, il comportamento previsto più probabile quando aggiungi qualsiasi valore in una stringa:

"1" + 1;
> "11"

I tipi di dati possono anche essere forzati esplicitamente. L'esempio seguente costringe il valore numerico 100 viene sostituito con un valore stringa di "100" utilizzando il linguaggio JavaScript integrato Metodo toString:

let myVariable = 100;

typeof myVariable;
> "number"

myVariable = myVariable.toString();
> "100"

typeof myVariable;
> "string"

Distinzione tra maiuscole e minuscole

A differenza del codice HTML e della maggior parte dei CSS, JavaScript è completamente sensibile alle maiuscole. Ciò significa che dovete sempre valorizzare tutto in modo coerente, proprietà e metodi integrati nella lingua per gli identificatori che definisci per te.

console.log( "Log this." );
> Log this.

console.Log( "Log this too." );
> Uncaught TypeError: console.Log is not a function
const myVariable = 2;

myvariable;
> Uncaught ReferenceError: myvariable is not defined

myVariable;
> 2

Spazio vuoto

JavaScript non fa distinzione tra spazi vuoti. Ciò significa che l'interprete ignora e tipo (tabulazioni o spazi) di spazio vuoto utilizzato.

                     console.log(       "Log this"  );console.log("Log this too");
> "Log this."
> "Log this too."

Tuttavia, la presenza di spazi vuoti può essere significativa come separatore tra token lessicali:

let x;

[token: [let] [x] ]

letx;
> Uncaught ReferenceError: letx is not defined

[token: [letx] ]

Dove vengono utilizzati spazi vuoti per separare i token grammaticali significativi, l'analizzatore sintattico ignora la quantità e il tipo di spazio vuoto:

let           x                             =                           2;

[token: [let] [x] [=] [2] ]

Lo stesso vale per le interruzioni di riga, anche se in alcuni casi possono causare problemi terminando prematuramente un'istruzione):

let x
=
2;

[token: [let] [x] [=] [2] ]

In termini stilistici, alcuni tipi di affermazioni spesso occupano una sola riga:

let x = 1;
let y = 2;

Sebbene alcune istruzioni utilizzino comunemente più righe:

if ( x == 2 ) {
  //some behavior;
}

Tuttavia, queste convenzioni hanno lo scopo di migliorare la leggibilità. JavaScript interpreta gli esempi precedenti allo stesso modo:

let x=1;let y=2;
if(x==2){}

Per questo motivo, un processo automatizzato che rimuove spazi non essenziali utilizzare i file di scripting per ridurre le dimensioni del trasferimento è un passaggio comune nella preparazione di JavaScript per un ambiente di produzione, oltre a una serie di altre ottimizzazioni.

L'uso di spazi vuoti in JavaScript dipende in gran parte dall'autore e le preferenze del gestore. Progetti JavaScript con più sviluppatori spesso il contributo di codice suggerisce o applica determinate convenzioni relative agli spazi vuoti garantire una formattazione del codice coerente, ad esempio, utilizzando tabulazioni o spazi per fai rientrare le istruzioni nidificate:

let myVariable = 10;

if ( typeof myVariable === "number" ) {
    console.log( "This variable is a number." );
    if( myVariable > 5 ) {
     console.log( "This variable is greater than five." );
    }
}

> "This variable is a number."
> "This variable is greater than five."

Verifica le tue conoscenze

Che cos'è un'espressione?

Un commento che spiega cosa sta facendo il codice.
Un'unità di codice che genera un valore.
Un gruppo di dichiarazioni e dichiarazioni.

JavaScript è sensibile alle maiuscole.

Falso
Vero