Variabile
Putem declara o variabilă cu ajutorul:
var
- declară o variabilă (function scope)
let
- declară o variabilă locală (block scope)
const
- declară o constantă locală (block scope)
Numele variabilei trebuie să respecte următoarele reguli:
- să înceapă cu o literă, (_), sau ($)
- următoarele caractere pot fi și cifre (0 - 9)
// corect
var userName, PetsClass, user102, $money, _myVar;
// incorect
var 102user;
Diferențe
var | let | const | |
---|---|---|---|
durata de viață | function scope | block scope | block scope |
redeclarare | da | nu | nu |
schimbarea valorii | da | da | nu |
inițializarea cu o valoare | opțional | opțional | obligatoriu |
specificat de | ECMAScript 1 | ECMAScript 2015 | ECMAScript 2015 |
Cuvinte rezervate:
Unele cuvinte sunt rezervate în JS și nu pot fi folosite pentru ca și nume de variabile, lista completă o găsiți pe MDN.
Scope
Prin scope înțelegem blocul de cod unde avem acces la variabilele definite în același bloc.
var catName = 'Tom'; // accesibilă global
function changeName() {
var catName = 'Kitty'; // accesibilă doar în changeName, nu modificăm catName global
if (true) {
var catName = 'Bagira'; // redeclarăm catName în interiorul funcției, schimbândui valoarea
console.log(catName);
}
console.log(catName); // log: Bagira
}
changeName();
console.log(catName); // log: Tom
let catName = 'Tom'; // accesibilă global
function changeName() {
let catName = 'Kitty'; // accesibilă doar în changeName, nu modificăm catName global
if (true) {
let catName = 'Bagira'; // accesibilă doar în acest if, nu modificăm celelalte catName
console.log(catName); // log: Bagira
}
console.log(catName); // log: Kira
}
changeName();
console.log(catName); // log: Tom
// ! în acest caz, dacă înlocuim let cu const vom primi același comportament
Erori posibile
var catName = 'Tom';
var catName = 'Bagira'; // e ok
let catName = 'Tom';
let catName = 'Bagira'; // Eroare: redeclarea variabilei nu e permisă
const catName = 'Tom';
const catName = 'Bagira'; // Eroare: redeclarea variabilei nu e permisă
var catName = 'Tom';
catName = 'Bagira'; // e ok
let catName = 'Tom';
catName = 'Bagira'; // e ok
const catName = 'Tom';
catName = 'Bagira'; // Eroare: nu putem modifica o constantă
var catName; // e ok
catName = 'Bagira'; // e ok
let catName; // e ok
catName = 'Bagira'; // e ok
const catName; // Eroare: nu putem declara o constantă fără valoare