let / const în JavaScript

Variabile și tipuri ES2015 (ES6)

Declară variabile: let pentru valori care se schimbă, const pentru valori care rămân la fel.

Sintaxă
let nume = valoare;
const NUME = valoare;

Ce face let / const

let și const declară variabile. Cu let poți da mai târziu o valoare nouă variabilei. Cu const nu poți: orice încercare dă eroare.

Ambele sunt valabile doar în blocul în care au fost declarate (între acoladele { }). Vechiul var nu respectă blocurile și produce erori greu de găsit, așa că în codul nou folosește doar let și const.

Regulă practică: folosește const peste tot și treci la let doar când chiar trebuie să schimbi valoarea.

Exemple

Exemplul 1: let se poate schimba, const nu

let scor = 10;
scor = scor + 5;
console.log(scor);

const PI = 3.14;
try {
  PI = 3;
} catch (eroare) {
  console.log(eroare.message);
}

Rezultat

15
Assignment to constant variable.

Exemplul 2: Conținutul unui const se poate modifica

const blochează doar legătura variabilei cu valoarea. Elementele unui tablou sau proprietățile unui obiect declarat cu const se pot schimba.

const cos = ["pâine"];
cos.push("lapte");
console.log(cos);

const setari = { tema: "deschisă" };
setari.tema = "întunecată";
console.log(setari);

Rezultat

[ 'pâine', 'lapte' ]
{ tema: 'întunecată' }

Exemplul 3: Valabilitatea în bloc

const mesaj = "în afara blocului";

if (true) {
  const mesaj = "în interiorul blocului";
  console.log(mesaj);
}

console.log(mesaj);

Rezultat

în interiorul blocului
în afara blocului

Greșeli frecvente

  • Declari aceeași variabilă de două ori cu let în același bloc. Primești SyntaxError: Identifier 'x' has already been declared.
  • Folosești o variabilă înainte de linia unde a fost declarată cu let sau const. Primești ReferenceError: Cannot access 'x' before initialization.
  • Crezi că const face un tablou neschimbabil. Pentru asta există Object.freeze().

Comenzi înrudite

  • typeof: Returnează tipul unei valori ca text: „string”, „number”, „boolean”, „object” etc.
  • destructuring: Destructurarea: scoate valori din obiecte și tablouri direct în variabile.
  • if / else: Rulează un bloc de cod doar dacă o condiție este adevărată.