Sobes.tech
Junior — Middle

Ի՞նչ տարբերություններ կան JavaScript-ում let և var օգտագործելով փոփոխականներ հայտարարելու միջև։

sobes.tech AI

Պատասխան AI-ից

Փոփոխականները, որոնք հայտարարվում են var-ով, ունեն ֆունկցիոնալ տեսանելիություն (function scope), մինչդեռ let-ը ունի բլոկային տեսանելիություն (block scope): Սա նշանակում է, որ let-ով հայտարարված փոփոխականը հասանելի է միայն ամենամոտ փակագծերի ներսում, օրինակ՝ ցիկլի կամ պայմանականի ներսում:

Բացի այդ, var-ը բարձրանում է (hoisting) և նախնականապես ինիցիալիզացվում է undefined արժեքով՝ նախքան կոդի գործարկումը, մինչդեռ let-ը նույնպես բարձրանում է, բայց չի ինիցիալիզացվում; փոփոխականին դիմելն առաջադրված է սխալի (Ժամային Մահվան Զոնա):

Օրինակ՝

function test() {
  console.log(a); // undefined
  // console.log(b); // ReferenceError
  var a = 1;
  let b = 2;
}

Նույնպես, var-ը թույլ է տալիս նույն փոփոխականը կրկին հայտարարելը նույն տեսանելիության մեջ, ինչը կարող է հանգեցնել սխալների, իսկ let-ը՝ ոչ։