Skip to content

JavaScript let kalit so'zi

let kalit so'zi ES6 (2015) versiyasida joriy qilingan.

let yordamida e'lon qilingan o'zgaruvchilarning asosiy xususiyatlari:

  • Blok qamroviga (Block Scope) ega.
  • Ishlatishdan oldin e'lon qilinishi shart.
  • Bir xil qamrovda qayta e'lon qilib bo'lmaydi.

Blok Qamrovi (Block Scope)

ES6 (2015) gacha JavaScript-da Blok qamrovi mavjud emas edi. Unda faqat Global qamrov va Funksiya qamrovi bor edi.

let va const kalit so'zlari JavaScript-ga Blok qamrovini olib kirdi.

Misol

{ } bloki ichida e'lon qilingan o'zgaruvchilarga blok tashqarisidan murojaat qilib bo'lmaydi:

js
{
  let x = 2;
}
// x ni bu yerda ishlatib bo'lmaydi

Funksiya Qamrovi (Function Scope)

Funksiya ichida e'lon qilingan barcha o'zgaruvchilar (var, let yoki const) Funksiya qamroviga ega bo'ladi:

Misol

js
function myFunction() {
  var x = 1;
  let y = 2;
  const z = 3;
}
// x, y va z ni bu yerda (funksiya tashqarisida) ishlatib bo'lmaydi

Global Qamrov (Global Scope)

var kalit so'zi bilan e'lon qilingan o'zgaruvchilar har doim Global qamrovga ega bo'ladi (agar funksiya ichida bo'lmasa). Ular blok qamroviga ega bo'la olmaydi:

Misol

js
{
  var x = 2;
}
// x ni bu yerda (blok tashqarisida) ISHLATISH MUMKIN

Qayta e'lon qilib bo'lmaydi

let bilan aniqlangan o'zgaruvchilarni bir xil qamrovda qayta e'lon qilib bo'lmaydi. Bu tasodifiy xatolarning oldini oladi.

Noto'g'ri usul

js
let x = "John Doe";
let x = 0; // Xatolik: 'x' allaqachon e'lon qilingan

var bilan esa buni qilish mumkin:

Misol (Tavsiya etilmaydi)

js
var x = "John Doe";
var x = 0; // Bu xatolik bermaydi

O'zgaruvchilarni qayta e'lon qilishdagi muammolar

var yordamida o'zgaruvchini blok ichida qayta e'lon qilish blok tashqarisidagi o'zgaruvchiga ham ta'sir qiladi:

Misol

js
var x = 10;
// Bu yerda x = 10
{
  var x = 2;
  // Bu yerda x = 2
}
// Bu yerda x = 2 (ta'sir qildi)

let bu muammoni hal qiladi. Blok ichidagi o'zgaruvchi tashqaridagisiga ta'sir qilmaydi:

Misol

js
let x = 10;
// Bu yerda x = 10
{
  let x = 2;
  // Bu yerda x = 2
}
// Bu yerda x = 10 (ta'sir qilmadi)

var, let va const o'rtasidagi farqlar

Xususiyatvarletconst
Blok qamroviYo'qHaHa
Qayta e'lon qilishHaYo'qYo'q
Qiymatni qayta biriktirishHaHaYo'q
Hoisting (Yuqoriga ko'tarish)HaHa (lekin uninitialized)Ha (lekin uninitialized)
this ga bog'lanishHaYo'qYo'q

Brauzerlar tomonidan qo'llab-quvvatlanishi

let va const kalit so'zlari Internet Explorer 11 va undan eski versiyalarda ishlamaydi. Zamonaviy brauzerlarning barchasi ularni to'liq qo'llab-quvvatlaydi.

Let va Hoisting (Yuqoriga ko'tarish)

var bilan e'lon qilingan o'zgaruvchilar yuqoriga ko'tariladi (hoisted) va istalgan vaqtda ishlatilishi mumkin:

Misol

Bu to'g'ri ishlaydi:

js
carName = "Volvo";
var carName;

let bilan e'lon qilingan o'zgaruvchilar ham blokning yuqorisiga ko'tariladi, lekin ular ishga tushirilmaydi (initialized).

Xatolik

let o'zgaruvchisini e'lon qilishdan oldin ishlatish ReferenceError xatoligiga olib keladi:

js
carName = "Saab";
let carName = "Volvo"; // ReferenceError