В този урок ще научите за разликата между let и var в JavaScript с помощта на примери.
В JavaScript и двете ключови думи var
и let
се използват за деклариране на променливи.
В let
ключовата дума е въведена в по-новата версия на JavaScript, известен като ES6 (ES2015) . И това е предпочитаният начин за деклариране на променливи.
JavaScript позволява Vs var
Ето преглед на разликите между let
и var
.
позволявам | вар |
---|---|
let е с блоков обхват. | var е обхват на функция. |
let не позволява повторно деклариране на променливи. | var позволява да се декларират променливи. |
Повдигането не се случва в let. | Повдигането става в var. |
JavaScript позволява Vs var в Local Scope
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
В горната програма променливата a е декларирана с var
. Променливата a може да се използва навсякъде във функцията greet
.
let е с блоков обхват
Променливата, декларирана с, 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();
Изход
hello world Uncaught ReferenceError: b не е дефиниран
В горната програма променливата a е декларирана във функцията и тя може да бъде достъпна навсякъде във функцията (a става функция с обхват).
Променливата b обаче се декларира вътре в if
блоковия оператор. b ще бъде с обхват на блока и достъпът до него ще бъде само вътре в if
блока.
Следователно, когато се опитате да получите достъп до b извън if
блока, възниква грешка (както е показано по-горе в програмата).
Забележка : Променливите, декларирани във функция, ще бъдат обхванати от функцията и за двете, var
и за let
.
let не позволява повторно деклариране на променливи
1. Променлива, декларирана с, var
може да бъде декларирана отново. Например,
var a = 5; // 5 var a = 3; // 3
Променлива, декларирана с, let
не може да бъде повторно декларирана в същия блок или същия обхват. Например,
let a = 5; let a = 3; // error
Изход
Uncaught SyntaxError: Идентификаторът „а“ вече е деклариран
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. Следователно стойността на a
се променя на 3 в края.
Когато променлива, декларирана с let, се използва в цикъл, стойността на променлива не се променя. Например,
let a = 2; for(let a = 0; a < 3; a++) ( console.log('hello'); ) console.log(a); // 2
В горната програма for
цикълът третира променлива a като различна променлива от тази, декларирана по-горе. И обхватът на тази променлива е само вътре в for
цикъла. Следователно стойността на променлива a остава 2 в края.
нека не позволява повдигане
Променливите, декларирани с, var
са издигнати в горната част на обхвата на програмата. Например,
console.log(a); var a; // undefined (not an error)
Ключовата дума let
не позволява повдигане. Например,
console.log(a); let a; // Uncaught ReferenceError: a is not defined
Ако искате да научите повече за повдигането, посетете JavaScript Hoisting.
let и var Поддръжка на браузъра
Повечето от съвременните браузъри поддържат използването на let
. Някои браузъри обаче не поддържат напълно let
.
За да научите повече, посетете JavaScript за поддръжка на браузъра.
Забележка : В случай на глобален обхват, както var
и let
ще се държат по същия начин. Например,
var a = 5; // 5
Променливата a ще бъде с общ обхват и може да бъде достъпна навсякъде в програмата.
let a = 5; // 5
Променливата a ще бъде с общ обхват и може да бъде достъпна навсякъде в програмата.