MC, 2025
Ilustracja do artykułu: Ką slepia var, let ir const? Atsakymas gali nustebinti!

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!

Imię:
Treść: