ES6: misollar bilan Var, Let va Const o'rtasidagi farq

Ushbu maqolada var, let va const ularning ko'lami va ko'tarilishi bo'yicha muhokama qilinadi.

Var:

Var bayonoti o'zgaruvchini e'lon qiladi. O'zgaruvchilar har qanday ma'lumotni saqlash uchun idishlardir.

Qo'llanish sohasi:

Var bilan e'lon qilingan o'zgaruvchining qamrovi uning joriy ijro etilish konteksti bo'lib, o'z ichiga qamrab oluvchi funktsiya yoki har qanday funktsiyadan tashqari e'lon qilingan o'zgaruvchilar uchun global hisoblanadi.

var o'zgaruvchilar qayta e'lon qilinishi va yangilanishi mumkin.
funktsiya x () {
  y = 1;
  var z = 2;
}

x ();

console.log (y); // 1, chunki, har doim global bo'lgan e'lon qilinmagan o'zgaruvchidir.
konsol.log (z); // Yo'naltirish xatosini tashlaydi: z aniqlanmagan ijro etilish kontekstida bo'lgani kabi, z x dan tashqarida aniqlanmaydi.

Yuqoridagi funktsiyada y = 1, bu faqat mulkni tayinlashdir. Avvalo y miqyosini zanjirga qarshi echishga harakat qiladi. Agar u ushbu qamrov zanjirining biron bir joyida topsa, u topshiriqni bajaradi; Agar u y-ni topmasa, u holda u global ob'ektda y xususiyatini yaratadi (u kengayish zanjirida yuqori darajadagi ob'ekt).

O'zgaruvchilarni funksiya yoki global miqyosda bo'lishidan qat'i nazar har doim e'lon qilish tavsiya etiladi.

Yuk ko'tarish:

Yuk ko'tarish - bu JavaScript mexanizmi, unda o'zgaruvchilar va funktsiya deklaratsiyalari kod bajarilishidan oldin ularning doirasining yuqori qismiga o'tkaziladi. Bu nimani anglatadi:

console.log (myName);
var myName = 'xyz';

Javascript kompilyatsiya qilinganda, var myName eng yuqori qismiga ko'chiriladi. Ammo ta'kidlash kerak bo'lgan asosiy narsa bu

Yuqoriga ko'tariladigan yagona narsa o'zgaruvchiga berilgan haqiqiy qiymat emas, balki o'zgaruvchan deklaratsiyalardir.

Shuning uchun console.log 'aniqlanmagan' chiqara oladi, chunki u o'zgaruvchi myName mavjudligini biladi, ammo uchinchi qatorga qadar myName qiymati berilmagan.

var myName;
console.log (myName); // Aniqlanmagan
myName = 'xyz';

Ruxsat bering:

blok, bayonot yoki u ishlatiladigan ifoda bilan cheklangan o'zgaruvchilar e'lon qilish uchun ruxsat beradi. Bu var kalit so'zidan farqli o'laroq, o'zgaruvchini global miqyosda yoki butun funktsiyani blok doirasidan qat'iy nazar belgilaydi.

Qo'llanish sohasi:

Blok kengligi. U yangilanishi mumkin, lekin bir xil doirada qayta e'lon qilinmaydi.
if (true) {
  let foo = "abc";
  ruxsat foo; // SyntaxError tashlandi. Qayta deklaratsiyalashga yo'l qo'yilmaydi.
}
-------------------------------------------------- -------
if (true) {
  let foo = "abc";
}
console.log (foo); // ReferatError: foo aniqlanmagan.foo blokirovka qilingan
-------------------------------------------------- -------
let foo = "abc";
if (true) {
  let foo = "xyz";
}
konsol.log (foo); // abc. O'zgaruvchilar har xil doirada e'lon qilinadi

Yuk ko'tarish:

Var kabi, deklaratsiyalar ham yuqoriga ko'tarilsin. Belgilanmagan sifatida initsial qilingan var farqli o'laroq, ruxsat etilgan kalit so'z boshlanmaydi. Shunday qilib, agar deklaratsiyadan oldin ruxsat berilgan o'zgaruvchini ishlatishga harakat qilsangiz, ma'lumotnoma xatosi paydo bo'ladi.

if (true) {
    console.log (myName);
    let myName = 'abc'; // Malumot xatosi
}

Const:

Const kalit so'zi o'zgaruvchini nomidan kodingizning istalgan joyida qayta ishlatilishiga yo'l qo'ymaydi.

Qo'llanish sohasi:

const deklaratsiyalari blokirovka qilingan. Uni yangilab yoki qayta e'lon qilib bo'lmaydi. Bu deklaratsiya vaqtida initsializatsiya qilinishi kerak.
if (true) {
  const foo = "abc";
  foo = "xyz"; // Doimiy o'zgaruvchiga tayinlash. Yangilab bo‘lmadi
}
-------------------------------------------------- -------
if (true) {
  const foo = "abc";
}
console.log (foo); // ReferatError: foo aniqlanmagan.foo blokirovka qilingan
-------------------------------------------------- -------
const foo = "abc";
if (true) {
   const foo = "xyz";
}
konsol.log (foo); // abc. O'zgaruvchilar har xil doirada e'lon qilinadi

Eslatma: Const ob'ekti yangilanmasa ham, ushbu ob'ektlarning xususiyatlari yangilanishi mumkin.

Yuk ko'tarish:

Bunga o'xshab, const deklaratsiyalari yuqoriga ko'tariladi, lekin boshlanmaydi. Bu erda, const kalit so'zi eng yuqori qismida e'lon qilinadi, ammo Undefined bilan boshlanmaydi.

if (true) {
    console.log (myName);
    const myName = 'abc'; // Malumot xatosi
}

Iltimos, sharhlaringizni qoldiring.

Seriyalarni o'rganing:

  • Javascript-dagi qamrov va bajarilish holati
  • Mashhur intervyu savollari bilan ko'tarilgan Demistified
  • Javascript yopilishlari

Iltimos, fikrlar, savollar yoki mavzular bo'yicha so'rovlarni joylashtiring. Agar ushbu xabar foydali bo'lsa, qo'llab-quvvatlashingizni ko'rsatish uchun iltimos, pastdagi tugmani bosing.

Manbalar: