Правилата за повдигане променят ли се в строг режим на JavaScript?
Здравейте! Като доставчик на подемни механизми съм навлязъл дълбоко в света на подемните механизми и всички свързани с технологиите неща. Един въпрос, който често изскача в общността на JavaScript, е: „Променят ли се правилата за повдигане в JavaScript в строг режим?“ Нека се поразровим в тази тема и да видим какво е какво.
Първо, за тези, които може да не са много запознати, повдигането в JavaScript е доста готина концепция. Тя ви позволява да използвате променливи и функции, преди те действително да бъдат декларирани във вашия код. Звучи малко диво, нали? Е, това е като да имате магическа пръчка, която ви позволява да се обадите на нещо, дори ако то все още не е официално „пристигнало“.
В нормален, не - строг режим на JavaScript, променливите, декларирани снашиятключова дума се издигат в горната част на тяхната съдържаща функция или глобален обхват. Но тук е уловката: повдига се само декларацията, а не инициализацията. Нека ви дам един пример:
console.log(myVar); var myVar = 10;
В този случай,console.logняма да издаде грешка. Вместо това ще се отпечатанедефиниран. Това е така, защото декларациятакъдето myWhereе издигнат на върха, но заданиетоmyVar = 10се случва по-късно при изпълнението на кода.
Функциите в нестрог режим също са повдигнати. Можете да извикате функция преди действителната й декларация в кода. Например:
myFunction(); функция myFunction() { console.log('Здравей, повдигане!'); }
Този код ще работи добре и ще се отпечатаЗдравей, повдигане!защото цялата декларация на функцията е издигната отгоре.


Сега нека поговорим за строг режим. Можете да активирате строг режим в JavaScript, като добавите низа'използвайте строги';в началото на скрипт или функция. Строгият режим е като по-дисциплинирана версия на JavaScript. Той налага по-строг набор от правила, за да направи кода ви по-стабилен и по-малко податлив на грешки.
Когато става въпрос за повдигане, правилата занашиятпроменливите в строг режим са почти същите като в не-строг режим. Декларацията се повдига, но не и инициализацията. Така че следният код в строг режим все още ще се държи според очакванията:
'използвайте строги'; console.log(myVar); var myVar = 10;
Ще се отпечатанедефиниранпоради повдигането нанашиятдекларация.
Стриктният режим обаче има някои разлики, когато става въпрос за повдигане на функциите. В строг режим, ако декларирате функция вътре в блок (като anакоизявление или азацикъл), тази функция вече не се издига в горната част на съдържащата функция или глобалния обхват.
Ето един пример:
'използвайте строги'; if (true) { function blockFunction() { console.log('Вътрешна блокова функция'); } } blockFunction(); // Това ще изведе ReferenceError
В не-строг режим това може да работи, защото функцията ще бъде повдигната. Но в строг режим функциятаblockFunctionе наличен само в блока, където е деклариран. Така че опитът да го извикате извън блока води до aReferenceError.
Друг интересен аспект е използването нанекаиконств строг режим. Това са нови начини за деклариране на променливи в JavaScript, въведени в ES6. За разлика отнашият,некаиконстне се повдигат по същия начин. Те имат така наречената "времева мъртва зона" (TDZ).
Нека да разгледаме пример снека:
'използвайте строги'; console.log(myLetVar); // Това ще изведе ReferenceError let myLetVar = 10;
TheнекапроменливаmyLetVarне може да бъде достъпен преди декларирането му. TDZ започва в началото на блока, къдетонекапроменливата е декларирана и завършва, когато се достигне действителната декларация.
Така че, за да отговорите на въпроса „Променят ли се правилата за повдигане в строг режим на JavaScript?“, отговорът е да и не. Правилата за повдигане нанашиятпроменливите остават до голяма степен същите, но има значителни промени, когато става въпрос за повдигане на функцията и поведението нанекаиконстпроменливи.
Като доставчик на повдигане, разбирането на тези правила за повдигане на JavaScript е важно, защото може да повлияе на начина, по който пишем и отстраняваме грешки в кода. Независимо дали работите върху прост скрипт или широкомащабно приложение, познаването на тези нюанси може да ви спести много главоболия.
Сега, ако сте на пазара за висококачествени подемни решения, ние ще ви покрием. Ние също се занимаваме с някои първокласни стоманени строителни продукти. Вижте нашитеПредварително проектирана висока жилищна стоманена сграда. Това е чудесен вариант за тези, които търсят надеждно и ефективно решение за стоманена сграда.
Ние също имамеСглобяеми многоетажни стоманени конструкции по жилищни чертежи. Тези чертежи са предназначени да направят вашия строителен проект по-гладък и организиран.
И ако се интересувате отпроизводство на метали, можем да ви предоставим висококачествени продукти, отговарящи на европейските стандарти.
Ако се интересувате от някой от нашите подемни продукти или стоманени строителни решения, не се колебайте да се свържете с нас. Ние сме тук, за да ви помогнем с всичките ви нужди от доставки. Независимо дали става дума за малък мащабен проект или широкомащабно развитие, ние разполагаме с експертизата и продуктите, за да го направим успешен.
Нека започнем разговор за това как можем да работим заедно. Свържете се с нас, за да обсъдим вашите изисквания и да получите оферта. Очакваме с нетърпение отговора ви!
Референции
- „JavaScript: Окончателното ръководство“ от Дейвид Фланаган
- Уеб документи на MDN за повдигане на JavaScript и строг режим
