Sobes.tech
Junior

Ինչպես կարելի է հայտարարագրել փոփոխականներ JavaScript-ում: Նշեք այս մեթոդների տարբերությունները։

sobes.tech AI

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

JavaScript-ում փոփոխականները կարելի է հայտարարել երեք եղանակով՝ var, let, const։

Նշված տարբերությունները՝

Տարբերություն var let const
Տեսակետային տարածք Ֆունկցիոնալ Բլոկային Բլոկային
Փոխարինում Հնարավոր Հնարավոր Անհնարավոր
Hoisting բարձրացնում է հայտարարությունը և ինիցիալիզացիան undefined-ին Բարձրացնում է հայտարարությունը, բայց ոչ ինիցիալիզացիան Բարձրացնում է հայտարարությունը, բայց ոչ ինիցիալիզացիան

Օրինակներ:

// var
function exampleVar() {
  var x = 10; // Ֆունկցիոնալ տարածք
  if (true) {
    var x = 20; // Հնարավոր է վերագրում նույն ֆունկցիայում
    console.log(x); // 20
  }
  console.log(x); // 20 (փոփոխական x-ը from if հասանելի է այստեղ)
}

console.log(x); // Խնդիր՝ ReferenceError: x չի սահմանված (x չի տեսանելի ֆունկցիայից դուրս)

// Hoisting var
console.log(a); // undefined
var a = 5;
console.log(a); // 5
// let
function exampleLet() {
  let y = 10; // Բլոկային տարածք
  if (true) {
    let y = 20; // Հնարավոր չէ վերագրում նույն բլոկում
    console.log(y); // 20 (այլ փոփոխական y)
  }
  console.log(y); // 10 (փոփոխական y-ը դուրս բլոկից)
}

console.log(y); // Խնդիր՝ ReferenceError: y չի սահմանված

// Hoisting let
// console.log(b); // Խնդիր՝ ReferenceError: Չի կարող հասնել 'b'-ին նախքան սկզբնավորումը
let b = 5;
console.log(b); // 5
// const
function exampleConst() {
  const z = 10; // Բլոկային տարածք
  // z = 20; // Խնդիր՝ TypeError: Կոնստանտ փոփոխականի վերագրում։ (Վերագրում հնարավոր չէ)
  if (true) {
    const z = 20; // Հնարավոր չէ վերագրում նույն բլոկում
    console.log(z); // 20 (այլ փոփոխական z)
  }
  console.log(z); // 10 (փոփոխական z-ը դուրս բլոկից)
}

console.log(z); // Խնդիր՝ ReferenceError: z չի սահմանված

// Hoisting const
// console.log(c); // Խնդիր՝ ReferenceError: Չի կարող հասնել 'c'-ին նախքան սկզբնավորումը
const c = 5;
console.log(c); // 5

// Օբյեկտների և զանգվածների համար, որոնք հայտարարում են `const`-ով, հնարավոր է փոփոխել պարունակությունը
const obj = { անուն: 'Թեստ' };
obj.անուն = 'Նոր Թեստ'; // Հնարավոր
// obj = { անուն: 'Այլ Թեստ' }; // Խնդիր