JS Let Хувьсагч
ESMAScript 2015-аас JavaScript-д let
болон const гэдэг
чухал хоёр шинэ түлхүүр үг нэмэгдсэн.
Эдгээр түлхүүр үгийн хамрах хүрээ нь Блок дотор хамаарах болно.
ESMAScript 2015-аас өмнө Глобал болон Функц дотор л гэсэн ойлголт байсан.
Глобал орчин
Хувьсагч зарлахдаа функцын гадна зарласан хувьсагчийг Глобал хувьсагч гэдгийг бид мэддэг болсон.
Жишээ нь
var phoneName = "IPhone";
myfunc();
function myFunc(){
document.getElementById("test").innerHTML = "Глобал хувьсагийг функцээс шууд дуудаж болно " + phoneName;
}
Глобал хувьсагчид JavaScript програмын хаанаас ч хандаж болдог гэдгийг бид өмнө нь үзсэн.
Функцийн орчин
функц дотор зарласан хувьсагч нь локал орчин буюу зөвхөн функц дотор хамаарах болно.
Жишээ нь
myfunc();
function myFunc(){
var phoneName = "IPhone";
document.getElementById("test1").innerHTML = typeof + " " + phoneName;
}
document.getElementById("test2").innerHTML = typeof phoneName;
Локал хувьсагчид тухайн хувьсагч зарласан функцээс хандаж болдог гэдгийг бид өмнө нь үзсэн.
Блокийн орчин
Блок кодын гүйцэтгэлийг {} буюу суман хаалтад бичдэгийг бид бүгд мэднэ.
Блок кодод хувьсагчийг var
түлхүүр үгээр зарлагдсан бол блокийн гаднаас хандах боломжтой байдаг.
Жишээ нь
{
var x = 2;
}
document.getElementById("test2").innerHTML = x; /* Блокийн гаднаас хандах боломжтой. */
ES2015-ас өмнө JavaScript-д блокийн орчин гэж байгаагүй.
Хувьсагчийг let
түлхүүр үгээр зарладаг болсноор Блокийн орчин бий болсон бөгөөд блокийн гаднаас хувьсагчид хандах боломжгүй болсон юм.
Жишээ нь
{
let x = 2;
}
x /* хувьсагчид хандах боломжгүй юм. */
Хувьсагчийг дахин зарлах
var
түлхүүр үгийг ашиглан хувьсагчийг дахин зарлах нь асуудал үүсгэх болно.
Жишээ нь
var x = 1000;
/* Энэ үед x ийн утга 1000 байна */
{
var x = 15;
/* Энэ үед x ийн утга 15 байна */
}
/* Энэ үед х ийн утга 15 байна. */
let
түлхүүр үгийг ашиглан дээрх асуудал бид шийдэж чадна. Өөрөөр хэлбэл блок дотор дахин зарласан хувьсагч блокийн гадна зарласан хувьсагчид нөлөөлж чадахгүй.
Жишээ нь
var x = 1000;
/* Энэ үед x ийн утга 1000 байна */
{
let x = 15;
/* Энэ үед x ийн утга 15 байна */
}
Энэ үед х ийн утга 1000 байна.
Давталтын орчин
var
түлхүүр үгийг давталтад ашиглаж үзье.
Жишээ нь
var i = 10;
for (var i = 0; i < 20; i++) {
/* зарим нөхцөл */
}
Энэ үед i ийн утга 20 байна.
let
түлхүүр үгийг давталтад ашиглаж үзье.
Жишээ нь
let i = 10;
for (let i = 0; i < 20; i++) {
/* зарим нөхцөл */
}
Энэ үед i ийн утга 10 байна.
АЖИГЛААД ҮЗЭЭРЭЙ: Давталтын орчинд хийсэн жишээний үр дүнг тайлбар харахгүй сайн ажиглаад учрын олоорой.
Эхний жишээнд var
түлхүүр үгийг ашигласан бөгөөд давталтын гадна хувьсагчийг зарлаж, давталтад хувьсагчийн утгыг дахин тодорхойлсон байна.
Хоёр дахь жишээнд let
түлхүүр үгийг ашиглан давталтын гадна хувьсагч зарласан бөгөөд энэ нь давталтын утганд хамаарахгүй юм.
Функцийн орчин
var
болон let
түлхүүр үгс нь функцийн орчинд бараг адилхан ажиллах болно. Харин функц нь блок код, давталт зэргийг ашиглах үед зөрүү нь гарах болно.
Жишээ нь
function myFunc(){
var phoneName = "Sumsung"; /* Функцийн орчинд ажиллана. */
}
function myFunc(){
let phoneName = "Sumsung"; /* Функцийн орчинд ажиллана. */
}
Глобал орчин
var
болон let
түлхүүр үгс нь Глобал орчинд бараг адилхан ажиллах болно.
Жишээ нь
var x = 100 /* Глобал орчин */
let x = 100 /* Глобал орчин */
Глобал хувьсагч HTML-д
HTML-д глобал хувьсагчийн хамрах хүрээ нь Windows объект байдаг бөгөөд >var
түлхүүр үгээр тодорхойлогдсон глобал хувьсагч л хамаарах болно.
Жишээ нь
var phoneName = "Sumsung"; /* Глобал орчин */
/* windows.phoneName ажиллах болно */
let phoneName = "Sumsung"; /* Глобал орчин */
/* windows.phoneName ажиллахгүй */
Дахин зарлах
var
түлхүүр үгээр хувьсагчийг дахин зарлахыг програмын аль ч хэсэгт зөвшөөрдөг.
Жишээ нь
var x = 150;
/* x -н утга 150 байна. */
var x = 15;
/* Одоо x -н утга 15 байна. */
var
болон let
түлхүүр үгээр адил хувьсагчийг нэг түвшинд зарлаж болохгүй.
Хэрэв нэг түвшинд зарлавал эхэнд зарласныг зөвшөөрөх болно.
Жишээ нь
var x = 150; /* зөвшөөрөгдсөн */
let x = 15; /* зөвшөөрөгдөөгүй */
{
var x = 150; /* зөвшөөрөгдсөн */
let x = 15; /* зөвшөөрөгдөөгүй */
}
Жишээ нь
let x = 150; /* зөвшөөрөгдсөн */
var x = 15; /* зөвшөөрөгдөөгүй */
{
let x = 150; /* зөвшөөрөгдсөн */
var x = 15; /* зөвшөөрөгдөөгүй */
}
let
түлхүүр үгээр адил хувьсагчийг нэг түвшинд зарлаж болохгүй.
Хэрэв нэг түвшинд зарлавал эхэнд зарласныг зөвшөөрөх болно.
Жишээ нь
let x = 150; /* зөвшөөрөгдсөн */
let x = 15; /* зөвшөөрөгдөөгүй */
{
let x = 150; /* зөвшөөрөгдсөн */
let x = 15; /* зөвшөөрөгдөөгүй */
}
let
түлхүүр үгээр өөр өөр орчинд адил нэртэй хувьсагч зарлахыг зөвшөөрөх болно.
Жишээ нь
let x = 150; /* зөвшөөрөгдсөн */
{
let x = 15; /* зөвшөөрөгдсөн */
}
{
let x = 50; /* зөвшөөрөгдсөн */
}