100 de întrebări pentru interviu în JavaScript
1. Care este diferența dintre var,let și const?
1.1. Variabila de tip var
Dacă declar o variabilă cu var în interiorul unei funcții nu o să o pot apela
Exemplu de declarare a variabilei greeter din exteriorul funcției:
var greeter = "hey hi";
function myFunction() {
var hello = "hello";
}
[Link](greeter);
Observăm că variabila este afișată cu succes.
Exemplu de declarare a variabilei hello din interiorul funcției:
var greeter = "hey hi";
function myFunction() {
var hello = "hello";
}
[Link](hello);
Observăm ca vom avea o erorare la afișare (hello is not defined) deoarece variabila hello este delcarată
doar în interiorul funcției ceea ce înseamnă că nu o pot apela înafara ei.
O altă proprietate este faptul ca variabilele declarate cu var pot fi redeclarate, exemplu:
var greeter = "hey hi"
var greeter = "good morning";
[Link](greeter)
Observăm că variabila s-a suprascris și acum va fi afișat ,, good morning” în loc de ,, hey hi “ .
Este posibilă și o altă variantă de declarare în care rezultatul este același:
var greeter = "hey hi";
greeter = "good morning";
[Link](greeter);
1.2. Fenomenul de Hoisting
Acum că înțelegeți cum funcționează o variabilă de tiă var urmează întrebarea, dacă apelez consola
înainte de delcararea variabilei? Exemplu:
[Link](greeter);
var greeter = "hey hi";
Observăm că valoarea afișată de consolă este undefined deoarece comportamentul specific limbajului
JS este de a muta declararea de variabile și funcții la începutul contextului de execuție(faza de
inițializare), înainte ca codul să fie executat în mod secvențial. Aceasta înseamnă că poți acesa o variabilă
delcarată sau o funcție definite înainte de a fi declarată în cod.
Deci varianta de mai sus va fi percepută ca:
var greeter;
[Link](greeter);
greeter = "hey hi";
Cu același rezultat.
Motivul pentru care variabilele var nu sunt folosite de dezvoltatorii software în majoritatea proiectelor
pe care lucrează este faptul ca nu au control asupra lor în interiorul blocurilor de cod. Exemplu:
var greeter = "say hi";
if (true) {
var greeter = "say hello";
}
[Link](greeter);
Observăm că afișarea variabilei depinde de declararea din blocul de cod pentru că aceasta se va
suprascrie și consola va afișa a 2 a declarare.
Imaginează