JS var/let/const

ULASHISH

Var, let va const o‘rtasidagi farq

var , let o‘rtasidagi asosiy farq va const ko‘lamli mexanizmlar, Qayta tayinlash qoidalari va JavaScript-ni qanday boshqarishida yotadi ularni Ko‘tarish (Ko‘tarish) orqali.

Qo‘llash doirasiRedeclareReassignHoistedEslatma
varYo‘qHaHaHaAniqlanmagan
letHaYo‘qHaHaInitsializatsiya qilinmagan
constHaYo‘qYo‘qHaInitsializatsiya qilinmagan

var bilan e’lon qilingan o‘zgaruvchilar ko‘tariladi, lekin undefined bilan ishga tushiriladi.

let va const bilan e’lon qilingan o‘zgaruvchilar ham ko‘tariladi, lekin ishga tushirilmagan.

let yoki const o‘zgaruvchisi e’lon qilinishidan oldin foydalanish natijada ReferenceError .

Blokning boshlanishi va deklaratsiya o‘rtasidagi vaqt vaqtinchalik o‘lik zona deb ataladi.

Nima yaxshi emas?

var deklaratsiya qilinishi shart emas.

var is hoisted.

var this’ga bog‘lanadi.

Zamonaviy JavaScript standartlari tasodifiy xatolarni kamaytirish uchun var’dan umuman foydalanmaslikni tavsiya qiladi.


Ko‘rinish doirasi qoidalari

var funksiya ko‘lami:
Agar siz sikl yoki if blokida var o‘zgaruvchini e’lon qilsangiz, u "oqadi" va blokdan tashqaridagi istalgan joydan foydalanish mumkin.

let va const bloklangan:
Ular eng yaqin jingalak qavslar {} juftligi bilan chegaralangan (masalan, sikllar, funksiyalar yoki shartli bloklar).

Qoida tariqasida, siz sukut bo‘yicha const dan foydalanishingiz kerak va faqat ishga tushirilgandan so‘ng o‘zgaruvchini qayta tayinlash kerak bo‘lganda let dan foydalaning.

var dan foydalanmaslik kerak.

Xususiyatvarletconst
Qo‘llash doirasiFunksiya yoki global qamrovBlok doirasi {}Blok doirasi {}
Qayta tayinlashYangilanishi mumkinYangilanishi mumkinYangilab bo‘lmaydi
Qayta deklaratsiyaQayta e’lon qilinishi mumkinQayta e’lon qilib bo‘lmaydiQayta e’lon qilib bo‘lmaydi
Ko‘tarish (Hoisting)Belgilanmagan sifatida ishga tushirildiKo‘tarilgan, ishga tushirilmaganKo‘tarilgan, ishga tushirilmagan

Nima yaxshi?

let va const blok ko‘lamiga (block scope) ega.

let va const qayta deklaratsiya qilish mumkin emas.

let va const ishlatilishidan oldin e’lon qilinishi shart.

let va const this ga bog‘lanmaydi.

let va const ko‘tarilmaydi.

Misol

if (true) {
  var firstName = "John";
  let lastName = "Doe";
}

let text1 = text2 = "unknown";

if (typeof firstName !== "undefined") text1 = firstName;
if (typeof lastName !== "undefined") text2 = lastName;
O‘zingiz sinab ko‘ring »

Qayta qiymat berish va qayta e’lon qilish

var bir xil o‘zgaruvchi nomini tasodifan bir xil miqyosda qayta e’lon qilish imkonini beradi, oldingi qiymatlarni jimgina qayta yozish.

yangilanishi/qayta tayinlanishi mumkin, lekin agar siz uni bir xil doirada qayta e’lon qilishga urinsangiz, u xatoga yo‘l qo‘yadi.

const faqat o‘qish uchun mo‘ljallangan. Bu deklaratsiyadan so‘ng darhol boshlang‘ich qiymatni talab qiladi va keyinroq uni qayta tayinlab bo‘lmaydi.

Const obyektlari haqida eslatma: Siz const o‘zgaruvchisini butunlay yangi qiymat bilan qayta tayinlay olmaysiz, baribir const bilan e’lon qilingan obyekt yoki massivning xususiyatlarini o‘zgartirishingiz mumkin.

Misol

// Create user object
const user = { name: "Alice" };

// This will work
user.name = "Bob";
let text = user.name + " ";

// This will not work
try {
  user = { name: "Charlie" };
  text += user.name;
} catch(err) {
  text += err;
}
O‘zingiz sinab ko‘ring »

Yuk ko‘tarish va vaqtinchalik o‘lik zona (TDZ)

Barcha o‘zgaruvchilar JavaScript dvigateli tomonidan o‘z doirasining yuqori qismiga ko‘tariladi, ammo ular boshqacha ko‘rib chiqiladi:

var o‘zgaruvchilari ko‘tariladi va avtomatik ravishda undefined standart qiymatini tayinlaydi. Ilovani buzmasdan kodda e’lon qilinishidan oldin ularga murojaat qilishingiz mumkin.

let va const ko‘tariladi, lekin butunlay ishga tushirilmaydi. Blokning boshlanishidan boshlab ular e’lon qilingan qatorgacha bo‘lgan kod hududi Vaqtinchalik o‘lik zona deb ataladi. Bu yerda ularga kirish bir zumda ReferenceError bilan ishlamay qoladi.


Eng yaxshi amaliyot

Ishlab chiquvchilar zamonaviy JavaScript (ES6 - 2015+) uchun quyidagi ko‘rsatmalarga amal qilishlari kerak:

Har doim sukut bo‘yicha const dan foydalaning. Bu tasodifiy qayta tayinlanishning oldini oladi va kodingizni oldindan aytish mumkin bo‘ladi.

Faqat quyidagi hollarda foydalaning: Uning qiymati keyinroq o‘zgarishi kerakligini bilasiz (aylanma yoki matematik hisoblagich ichida).

Hech qachon var ishlatmang. Uning oldindan aytib bo‘lmaydigan qamrovi va qayta deklaratsiya qoidalari xatolarga olib kelishi ma’lum.


W3Schools Pathfinder

Yutuqlaringizni kuzating – bu bepul!