Ką slepia var, let ir const? Atsakymas gali nustebinti!
Jei kada nors rašei kodą JavaScript kalba, tikriausiai susidūrei su trimis magiškais žodžiais: var, let ir const. Jie visi naudojami kintamiesiems deklaruoti, bet jų elgsena gali skirtis drastiškai – ir dažnai tai būna paini pradžioje. Šis straipsnis padės tau išsiaiškinti difference between var let const ir parodys realius pavyzdžius, kur šie skirtumai tampa labai svarbūs.
Kodėl reikia trijų būdų kintamajam apibrėžti?
JavaScript ilgą laiką turėjo tik var. Tačiau atsiradus ES6 (ECMAScript 2015), buvo įvesti let ir const, siekiant pašalinti keistą var elgseną ir padaryti kodą saugesnį bei labiau nuspėjamą.
var: senoji mokykla
var deklaruoti kintamieji turi kelias keistas savybes:
- Jie yra function-scoped, t.y. matomi visoje funkcijoje, kurioje deklaruoti.
- Jie yra hoisted – tai reiškia, kad jie „pakeliami“ į viršų, net jei deklaruoti žemiau.
function testVar() {
console.log(a); // undefined, o ne klaida!
var a = 10;
console.log(a); // 10
}
testVar();
let: modernus ir saugus
let yra block-scoped, t.y. galioja tik tame bloke, kuriame yra. Be to, skirtingai nei var, jis nėra „pakeliamas“ iki tokio lygio, kad būtų prieinamas prieš deklaraciją.
function testLet() {
// console.log(b); // Uncaught ReferenceError: Cannot access 'b' before initialization
let b = 20;
console.log(b); // 20
}
testLet();
const: pastovus, bet ne visada
const taip pat yra block-scoped kaip ir let, tačiau skirtumas tas, kad jo reikšmės negalima perrašyti po deklaracijos. Bet saugokitės – jei tai objektas ar masyvas, jo vidus gali būti keičiamas!
const c = 30; c = 40; // Uncaught TypeError: Assignment to constant variable.
const user = { name: "Jonas" };
user.name = "Petras"; // leidžiama!
console.log(user.name); // "Petras"
difference between var let const pavyzdžiai: Scopas
Pažiūrėkime, kaip kiekvienas kintamasis elgiasi bloko viduje:
{
var x = 1;
let y = 2;
const z = 3;
}
console.log(x); // 1
// console.log(y); // ReferenceError
// console.log(z); // ReferenceError
var praslysta pro bloką, bet let ir const pasilieka jame.
Hoisting: paslaptingas kodo „kėlimas“
var kintamieji yra „pakeliami“, bet jų reikšmė nėra:
console.log(a); // undefined var a = 5;
Bet su let ir const gausime klaidą:
console.log(b); // ReferenceError let b = 10;
Keitimas po deklaracijos
var ir let leidžia keisti reikšmę:
var d = 100; d = 200; let e = 300; e = 400;
const – neleidžia:
const f = 500; f = 600; // TypeError
Kurį naudoti?
Moderniuose projektuose rekomenduojama naudoti let ir const. Paprastai naudok const kaip numatytą, ir tik jei tikrai reikia keisti – naudok let. var laikoma pasenusia ir reikėtų jos vengti.
Dažniausios klaidos su var
Pavyzdžiui:
for (var i = 0; i < 3; i++) {
setTimeout(() => console.log(i), 100);
}
// Spausdins: 3, 3, 3
Sprendimas:
for (let i = 0; i < 3; i++) {
setTimeout(() => console.log(i), 100);
}
// Spausdins: 0, 1, 2
Pavyzdys su funkcijų skambinimu
Jei norime grąžinti funkciją su saugotu skaičiumi:
function makeCounter() {
let count = 0;
return function () {
count++;
return count;
};
}
const counter = makeCounter();
console.log(counter()); // 1
console.log(counter()); // 2
Su let kintamasis lieka gyvas per visus kvietimus – su var taip pat veiktų, bet gali sukelti painiavą dėl scopų.
Psichologinis aspektas
Naudodami const automatiškai komunikuojame sau ir kitiems: „Šio kintamojo nereikia keisti“. Tai pagerina kodo skaitomumą ir mažina klaidų tikimybę.
Santrauka: difference between var let const
- var – function scope, hoisting, keičiamas, pasenęs.
- let – block scope, nehoistinamas, keičiamas, saugus.
- const – block scope, nehoistinamas, nekeičiamas (išorėje).
Išvada: kaip būti protingu JavaScript programuotoju?
Naudok const kaip numatytą, jei reikės – let. Palik var istorijai. Tik taip rašysi modernų, saugų ir suprantamą kodą!
Link pabaigos, bet dar ne viskas
Jeigu supratai difference between var let const ir nori pasipraktikuoti – parašyk mažą projektą, kuriame sąmoningai naudotum let ir const. Pamatysi, kaip greitai tai taps tavo įpročiu!
Pabaigai – šypsena ir kodas
Programavimas gali būti ir linksmas! Pažink savo įrankius, eksperimentuok, klausk, mokykis – ir tavo JavaScript kelias bus kupinas atradimų!

Komentarze (0) - Nikt jeszcze nie komentował - bądź pierwszy!