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