JS var/let/const
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 doirasi | Redeclare | Reassign | Hoisted | Eslatma | |
|---|---|---|---|---|---|
| var | Yo‘q | Ha | Ha | Ha | Aniqlanmagan |
| let | Ha | Yo‘q | Ha | Ha | Initsializatsiya qilinmagan |
| const | Ha | Yo‘q | Yo‘q | Ha | Initsializatsiya 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.
| Xususiyat | var | let | const |
|---|---|---|---|
| Qo‘llash doirasi | Funksiya yoki global qamrov | Blok doirasi {} | Blok doirasi {} |
| Qayta tayinlash | Yangilanishi mumkin | Yangilanishi mumkin | Yangilab bo‘lmaydi |
| Qayta deklaratsiya | Qayta e’lon qilinishi mumkin | Qayta e’lon qilib bo‘lmaydi | Qayta e’lon qilib bo‘lmaydi |
| Ko‘tarish (Hoisting) | Belgilanmagan sifatida ishga tushirildi | Ko‘tarilgan, ishga tushirilmagan | Ko‘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.
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!
