У овом упутству ћете научити о разлици између лет и вар у ЈаваСцрипт-у помоћу примера.
У ЈаваСцрипт-у се обе кључне речи var
и let
користе за декларисање променљивих.
let
Кључна реч је уведен у каснијој верзији ЈаваСцрипт познат као ЕС6 (ЕС2015) . И то је преферирани начин декларисања променљивих.
ЈаваСцрипт дозвољава Вс вар
Ево прегледа разлика између let
и var
.
дозволити | вар |
---|---|
нека је блок-опсега. | вар је опсег функције. |
лет не дозвољава поновно декларисање променљивих. | вар омогућава поновно пријављивање променљивих. |
Подизање се не догађа у лет. | Подизање се јавља у вар. |
ЈаваСцрипт допушта Вс вар у Лоцал Сцопе
вар је опсег функције
Променљива декларисана унутар функције са var
може се користити било где унутар функције. На пример,
// program to print text // variable a cannot be used here function greet() ( // variable a can be used here var a = 'hello'; console.log(a); ) // variable a cannot be used here greet(); // hello
У горњем програму променљива а је декларисана са var
. Променљива а се може користити било где унутар функције greet
.
нека је блок-опсега
Променљивој декларисаној са let
може се приступити само унутар блока кода. На пример,
// program to print the text // variable a cannot be used here function greet() ( let a = 'hello'; // variable b cannot be used here if(a == 'hello')( // variable b can be used here let b = 'world'; console.log(a + ' ' + b); ) // variable b cannot be used here console.log(a + ' ' + b); // error ) // variable a cannot be used here greet();
Оутпут
хелло ворлд Унцаугхт РеференцеЕррор: б није дефинисан
У горе наведеном програму, променљива а је декларисана унутар функције и може јој се приступити било где унутар функције (а постаје опсег функције).
Међутим, променљива б је декларисана унутар if
наредбе блока. б ће бити обухваћен блоком и моћи ће му се приступити само унутар if
блока.
Стога, када покушате да приступите б изван if
блока, долази до грешке (као што је горе приказано у програму).
Напомена : Променљиве декларисане унутар функције биће опсега функција и за var
и let
.
нека не дозвољава поновно објављивање променљивих
1. Променљива декларисана са var
може се поново декларирати. На пример,
var a = 5; // 5 var a = 3; // 3
Променљива декларисана са let
не може се поново декларирати у истом блоку или истом опсегу. На пример,
let a = 5; let a = 3; // error
Оутпут
Унцаугхт СинтакЕррор: Идентификатор 'а' је већ проглашен
2. Поновно проглашавање променљиве var
у другом опсегу или блоку мења и вредност спољне променљиве. На пример,
var a = 5; console.log(a); // 5 ( var a = 3; console.log(a); // 3 ) console.log(a); // 3
Поновно проглашавање променљиве са let
у другом опсегу или блоку третира ту променљиву као различиту променљиву. А вредност променљиве споља се не мења. На пример,
let a = 5; console.log(a); // 5 ( let a = 3; console.log(a); // 3 ) console.log(a); // 5
3. Када се променљива декларисана var
користи у петљи, вредност те променљиве се мења. На пример,
var a = 2; for(var a = 0; a < 3; a++) ( console.log('hello'); ) console.log(a); // 3
У горњем програму, for
петља поново декларише променљиву а. Отуда се вредност на крају a
мења у 3 .
Када се променљива декларисана лет користи у петљи, вредност променљиве се не мења. На пример,
let a = 2; for(let a = 0; a < 3; a++) ( console.log('hello'); ) console.log(a); // 2
У горњем програму, for
петља третира променљиву а као различиту променљиву од оне која је горе декларисана. А опсег те променљиве је само унутар for
петље. Отуда вредност променљиве а на крају остаје 2 .
нека Не дозвољава подизање
Променљиве декларисане са var
постављене су на врх обима програма. На пример,
console.log(a); var a; // undefined (not an error)
Кључна реч let
не дозвољава подизање. На пример,
console.log(a); let a; // Uncaught ReferenceError: a is not defined
Ако желите да сазнате више о дизању, посетите ЈаваСцрипт дизање.
лет анд вар подршка за прегледаче
Већина модерних прегледача подржава употребу let
. Међутим, неки прегледачи не подржавају у потпуности let
.
Да бисте сазнали више, посетите ЈаваСцрипт нека подршка за прегледаче.
Напомена : У случају глобалног опсега, и једно var
и друго let
понашаће се на исти начин. На пример,
var a = 5; // 5
Променљива а биће глобалног опсега и моћи ће јој се приступити било где у програму.
let a = 5; // 5
Променљива а биће глобалног опсега и моћи ће јој се приступити било где у програму.