Разлики между ключовите думи var, let и const в Javascript

Променливите по същество са наименувани места в паметта или препратки към някои данни в паметта на машината и препратките могат динамично да се променят, за да отразяват истинското състояние на данните, които сме обозначили по този начин.

В JavaScript потребителите могат да декларират променливи с помощта на три ключови думи var, letи const. В тази статия ще разгледаме основните разлики между ключовите думи var, letи constв JavaScript, по отношение на техния обхват, използване и повдигане

VAR

Преди появата на ES6 декларацията на var беше най-старият метод за декларация на променливи. Въпреки че често има проблеми, свързани с променливи, декларирани с ключовата дума var. Ето защо беше необходимо да се появят нови начини за деклариране на променливи. Което доведе до letи constс пристигането на ES6(ES2015). Но първо, нека разберем ключовата дума var.

Обхват на Var

Обхват по същество означава къде тези променливи са достъпни за използване. Var декларациите са с глобален обхват или функция/локален обхват.

Обхватът е глобален, когато променлива var е декларирана извън функция. Това означава, че всяка променлива, която е декларирана с var извън функция или блок, е достъпна за използване в целия прозорец.

var е с обхват на функция, когато е деклариран във функция. Това означава, че е наличен и може да бъде достъпен само в рамките на този функционален блок, където е бил деклариран.

var firstName = „Ibelachi“;

функция checkMyName(){

var lastName = “Chinedu”;

}

Имаме две декларации в горния пример firstName е с глобален обхват, защото е дефиниран извън функция, а lastName е с локален/функционален обхват, защото е дефиниран във функция:

var firstName = „Ibelachi“;

функция checkMyName(){

var lastName = “Chinedu”;

}

Console.log(ластно име); //изход: грешка: фамилното име не е дефинирано

Ще получим грешка, която е в резултат на това, че фамилното име не е налично извън функцията.

Променливите Var могат да бъдат повторно декларирани и актуализирани

Това означава, че можем да направим това в същия обхват и няма да получим грешка.

var fruit = “манго”;

var fruit = „ябълки“;

И това също

var car = “Lexus”;

кола = “Тойота”;

Извдигане на вар

Повдигането е механизъм на JavaScript, който се отнася до ситуация, при която променливи и декларации на функции се преместват в горната част на техния обхват преди изпълнение на кода. Това означава, че ако направим това:

Console.log(поздрав);

Var поздрав = „добро утро!“;

Горният код тук ще се тълкува по следния начин

Var поздрав;

Console.log(поздрав); // Изход: грешка: поздравът е недефиниран

поздрав = “добро утро!”;

Така че променливите var се издигат до върха на техния обхват и първо се инициализират, в противен случай те ще върнат стойност на undefined

Някои често срещани проблеми, свързани с ключовата дума за деклариране на Var

Има обаче слабост, която идва с ключовата дума var. Нека използваме пример, за да демонстрираме някои от често срещаните проблеми, които често се свързват с използването на ключовата дума var при декларирането на променлива.

var greeting = „добро утро!“;

променливо настроение = 4;

ако (настроение › 3){

var greeting = „вместо това добър ден“

}

Console.log(поздрав); //"вместо това добър ден"

И така, тъй като mood › 3 връща true, поздравът се предефинира на „вместо това добър ден“. Въпреки че това не е проблем, ако съзнателно искате поздравът да бъде предефиниран, става проблем, когато не осъзнавате, че променлив поздрав вече е бил дефиниран преди.

Ако например сте използвали поздрав в други части на вашия код, може да се изненадате от резултата, който може да получите. Това вероятно ще причини много грешки във вашия код. Ето защо let и const са абсолютно необходими.

НЕКА

let вече се предпочита за деклариране на променливи. Не е изненадващо, тъй като идва като подобрение на var декларациите. Той също така решава проблема с var, който току-що разгледахме. Нека помислим защо това е така.

От изключителна важност е да се отбележи, че ключовата дума let е с обхват на блок или функция

Блокът е част от код, ограничен от {}. Един блок живее във фигурни скоби. Всеки код, написан във фигурни скоби, е блок от код. Така че променлива, декларирана в блок с let, е достъпна само за използване в този блок. Нека изброим това понятие с пример:

let name = „ibelachi chinedu“;

нека настроение = 4;

ако (настроение › 3){

let greeting = “добър ден”;

Console.log(поздрав); // Изход: ”добър ден”

}

Console.log(поздрав); // Изход: грешка: „поздравът не е дефиниран“

Виждаме, че използването на поздрав извън неговия блок (къдравите скоби, където е дефинирано) връща грешка. Това е така, защото както споменахме по-рано, ключовата дума let в декларацията на променлива е с блоков обхват.

Нека може да се актуализира, но не и да се декларира отново.

Точно като var, променлива, декларирана с let, може да бъде актуализирана в своя обхват. За разлика от var, променливата let не може да бъде повторно декларирана в своя обхват. Това означава, че кодът по-долу ще работи перфектно:

нека поздрав = добро утро;

поздрав = добър ден;

Докато от друга страна това ще върне грешка

нека поздрав = добро утро;

нека поздрав = добър ден; // изход: грешка: идентификатор „поздравът вече е деклариран

Въпреки това, ако една и съща променлива е дефинирана в различни обхвати, няма да има грешка:

нека поздрав = добро утро;

Ако е вярно){

нека поздрав = добър ден;

Console.log(поздрав); // изход: "добър ден"

}

Console.log(поздрав);// изход: “добро утро”

Защо няма грешка? Това е така, защото и двата случая се третират като различни променливи, тъй като имат различни обхвати. Това всъщност прави let по-добър избор от var в декларацията на променлива. Когато използвате let, не е нужно да се притеснявате, ако сте използвали име за променлива преди като променлива, тъй като тя съществува само в своя обхват. Освен това, тъй като една променлива не може да бъде декларирана повече от веднъж в рамките на обхват, тогава проблемът, обсъден по-рано, който възниква с var, не се случва, както в случая с let.

Всъвкачване на лет

Точно като var, декларациите let се издигат на върха. Въпреки това, за разлика от var, която се инициализира като undefined, ключовата дума let не се инициализира. Така че, ако се опитате да използвате променлива let преди декларация, ще получите референтна грешка.

КОНСТ

Променливите, декларирани с ключовата дума const, поддържат постоянни стойности. декларациите const споделят някои прилики с декларацията let. Декларацията const е с блоков обхват. Подобно на декларациите let, декларациите const могат да бъдат достъпни само в рамките на блока, в който са декларирани. Ключовата дума const в декларацията на променлива не може да бъде актуализирана или повторно декларирана. Това означава, че стойността на променлива, декларирана с const, остава същата в нейния обхват. Не може да се актуализира или предекларира. Така че, ако декларираме променлива с const, не можем да направим нито това:

const поздрав = “Здравей”;

поздрав = “Как си”; //Изход: грешка: присвояване на постоянна променлива

Нито пък това

const поздрав = “Здравей”;

const greeting = “Как си”; ”; //Изход: грешка: идентификаторът „поздрав“ вече е присвоен

Следователно всяка декларация на const трябва да бъде инициализирана по време на декларацията.

Това поведение е някак различно, когато става въпрос за обекти, декларирани с const. Докато const обект не може да бъде актуализиран, свойствата на обектите могат да бъдат актуализирани. Следователно, ако декларираме константен обект като този:

const myData = {

първо име: „Ибелачи“

фамилно име: ‘chinedu’

следа: "frontend"

}

Докато не можем да направим това

myData = {

Месец на раждане: „Декември

псевдоним: „Страст-кибер

footballGoat: „Роналдо

}

Но от друга страна можем да направим това вместо това:

myData.location = „Енугу на оформлението на независимостта“

Това ще актуализира стойността на myData.location без връщане на грешки.

Повдигане на конст

Точно като let, декларациите const се издигат най-отгоре, но не се инициализират.

В обобщение можем да кажем, че декларациите на var са с глобален обхват или функционален обхват, докато let и const са с блоков обхват. var променливите могат да бъдат актуализирани и повторно декларирани в неговия обхват, докато let променливите могат да бъдат актуализирани, но не и повторно декларирани. Но от друга страна, const променливите не могат нито да бъдат актуализирани, нито повторно декларирани и всички те са издигнати до върха на своя обхват. Но докато променливите var се инициализират с undefined, променливите let и const не се инициализират по същия начин. Ключовата дума var и let може да се декларира, без да се инициализира, напротив, const трябва да се инициализира по време на декларацията.