Ricerca…
Sintassi
- var foo [= value [, foo2 [, foo3 ... [, fooN]]]];
- lascia bar [= valore [, bar2 [, foo3 ... [, barN]]]];
- const baz = value [, baz2 = value2 [, ... [, bazN = valueN]]];
Osservazioni
Guarda anche:
Riassegnazione delle costanti
Non è possibile riassegnare le costanti.
const foo = "bar";
foo = "hello";
stampe:
Uncaught TypeError: Assignment to constant.
Modifica delle costanti
La dichiarazione di una variabile const
impedisce solo che il suo valore venga sostituito da un nuovo valore. const
non pone alcuna restrizione sullo stato interno di un oggetto. L'esempio seguente mostra che un valore di una proprietà di un oggetto const
può essere modificato e anche le nuove proprietà possono essere aggiunte, poiché l'oggetto assegnato a una person
viene modificato, ma non sostituito .
const person = {
name: "John"
};
console.log('The name of the person is', person.name);
person.name = "Steve";
console.log('The name of the person is', person.name);
person.surname = "Fox";
console.log('The name of the person is', person.name, 'and the surname is', person.surname);
Risultato:
The name of the person is John
The name of the person is Steve
The name of the person is Steve and the surname is Fox
In questo esempio abbiamo creato un oggetto costante chiamato person
e abbiamo riassegnato la proprietà person.name
e creato una nuova proprietà person.surname
.
Dichiarazione e inizializzazione delle costanti
È possibile inizializzare una costante utilizzando la parola chiave const
.
const foo = 100;
const bar = false;
const person = { name: "John" };
const fun = function () = { /* ... */ };
const arrowFun = () => /* ... */ ;
Importante
Devi dichiarare e inizializzare una costante nella stessa dichiarazione.
Dichiarazione
Esistono quattro modi principali per dichiarare una variabile in JavaScript: utilizzando le variabili var
, let
o const
, o senza una parola chiave (dichiarazione "nuda"). Il metodo utilizzato determina l' ambito risultante della variabile o la riassegnabilità nel caso di const
.
- La parola chiave
var
crea una variabile dell'ambito della funzione. - La parola chiave
let
crea una variabile a ambito di blocco. - La parola chiave
const
crea una variabile a ambito di blocco che non può essere riassegnata. - Una dichiarazione nuda crea una variabile globale.
var a = 'foo'; // Function-scope
let b = 'foo'; // Block-scope
const c = 'foo'; // Block-scope & immutable reference
Tieni presente che non puoi dichiarare le costanti senza inizializzarle contemporaneamente.
const foo; // "Uncaught SyntaxError: Missing initializer in const declaration"
(Un esempio di dichiarazione di variabile senza parole chiave non è incluso sopra per motivi tecnici. Continua a leggere per vedere un esempio.)
Tipi di dati
Le variabili JavaScript possono contenere molti tipi di dati: numeri, stringhe, matrici, oggetti e altro:
// Number
var length = 16;
// String
var message = "Hello, World!";
// Array
var carNames = ['Chevrolet', 'Nissan', 'BMW'];
// Object
var person = {
firstName: "John",
lastName: "Doe"
};
JavaScript ha tipi dinamici. Ciò significa che la stessa variabile può essere utilizzata come tipi diversi:
var a; // a is undefined
var a = 5; // a is a Number
var a = "John"; // a is a String
Non definito
La variabile dichiarata senza un valore avrà il valore undefined
var a;
console.log(a); // logs: undefined
Cercando di recuperare il valore delle variabili non dichiarate si ottiene un ReferenceError. Tuttavia, sia il tipo di variabili non dichiarate che unitializzate è "indefinito":
var a;
console.log(typeof a === "undefined"); // logs: true
console.log(typeof variableDoesNotExist === "undefined"); // logs: true
assegnazione
Per assegnare un valore a una variabile dichiarata in precedenza, utilizzare l'operatore di assegnazione, =
:
a = 6;
b = "Foo";
In alternativa alla dichiarazione e all'assegnazione indipendenti, è possibile eseguire entrambe le fasi in un'unica istruzione:
var a = 6;
let b = "Foo";
È in questa sintassi che le variabili globali possono essere dichiarate senza una parola chiave; se si dovesse dichiarare una variabile nuda senza un incarico immediatamente successivo, l'interprete non sarebbe in grado di differenziare le dichiarazioni globali a;
dai riferimenti alle variabili a;
.
c = 5;
c = "Now the value is a String.";
myNewGlobal; // ReferenceError
Si noti, tuttavia, che la sintassi precedente è generalmente scoraggiata e non è conforme alla modalità rigorosa. Questo per evitare lo scenario in cui un programmatore rilascia inavvertitamente una parola chiave let
o var
dalla propria istruzione, creando accidentalmente una variabile nello spazio dei nomi globale senza rendersene conto. Questo può inquinare lo spazio dei nomi globale e il conflitto con le librerie e il corretto funzionamento di uno script. Pertanto, le variabili globali dovrebbero essere dichiarate e inizializzate usando la parola chiave var
nel contesto dell'oggetto window, in modo che l'intento sia esplicitamente indicato.
Inoltre, le variabili possono essere dichiarate diverse alla volta separando ciascuna dichiarazione (e l'assegnazione facoltativa del valore) con una virgola. Usando questa sintassi, var e let le parole chiave devono essere utilizzate solo una volta all'inizio di ogni istruzione.
globalA = "1", globalB = "2";
let x, y = 5;
var person = 'John Doe',
foo,
age = 14,
date = new Date();
Si noti nello snippet di codice precedente che l'ordine in cui si verificano le espressioni di dichiarazione e assegnazione ( var a, b, c = 2, d;
) non ha importanza. Puoi mescolare liberamente i due.
La dichiarazione di funzione crea anche delle variabili.
Operazioni matematiche e incarichi
Incremento di
var a = 9,
b = 3;
b += a;
b
ora sarà 12
Questo è funzionalmente lo stesso di
b = b + a;
Decremento di
var a = 9,
b = 3;
b -= a;
b
ora sarà 6
Questo è funzionalmente lo stesso di
b = b - a;
Moltiplicato per
var a = 5,
b = 3;
b *= a;
b
ora sarà 15
Questo è funzionalmente lo stesso di
b = b * a;
Dividi per
var a = 3,
b = 15;
b /= a;
b
ora sarà 5
Questo è funzionalmente lo stesso di
b = b / a;
Alza al potere di
var a = 3,
b = 15;
b **= a;
b
sarà ora 3375
Questo è funzionalmente lo stesso di
b = b ** a;