JavaСкриптова променлива: Деклариране, присвояване на стойност с пример
⚡ Умно обобщение
JavaПроменливите в скрипта съхраняват стойности като имена и числа или резултат от израз. Декларирането на такава с var, let или const запазва именуван слот, който останалата част от скрипта може да чете и актуализира.
Променливите се използват за съхраняване на стойности (име = „Джон“) или изрази (сума = x + y). Всяка стойност, която скриптът запазва за по-късно – потребителско име, текуща сума, флаг „да“ или „не“ – се намира в променлива, така че декларирането и правилното им именуване е първото умение, което трябва да усвоите. JavaСценарий.
Деклариране на променливи в JavaСценарий
Преди да използвате променлива, първо трябва да я декларирате. Трябва да използвате ключовата дума var, за да декларирате променлива по следния начин:
var name;
Декларацията сама по себе си създава името и нищо повече. В този момент променливата съществува, но съдържа специалната стойност неопределена, защото все още не е въведена стойност в нея.
⚠️ Бележка към версията: var е оригиналната ключова дума за декларация и все още се изпълнява във всеки браузър. Добавен е ES6 (2015). нека намлява конст, които са ключовите думи „модерно“ JavaИзползване на скриптове. И двете са сравнени с var по-надолу на тази страница.
Задайте стойност на променливата
Можете да присвоите стойност на променливата или докато декларирате променливата, или след деклариране на променливата.
var name = "John";
OR
var name; name = "John";
И двете форми завършват с един и същ резултат. Единичният знак за равенство е оператор за присвояване: копира стойността отдясно в променливата отляво. Това не е тест за равенство, който се записва като == или === и принадлежи към условни изявления.
Наименуване на променливи
Въпреки че можете да именувате променливите както желаете, добра практика за програмиране е да им давате описателни и смислени имена. Освен това имената на променливите трябва да започват с буква и са чувствителни към главни и малки букви. Следователно променливите studentname и studentName са различни, защото буквата n в името е различна (n и N).
Четири правила определят дали едно име е законно:
- Първият символ трябва да е буква, знак за долар или долна черта — никога цифра.
- След първия знак са позволени букви, цифри, знаци за долар и долни черти.
- Интервалите не са позволени, поради което идея от две думи се съединява като studentName, а не се оставя като две думи.
- Резервирани думи като var, let, const, class и return не могат да бъдат използвани повторно като имена.
По конвенция JavaИмената на скриптовете използват camelCase, така че първата дума е с малка буква, а всяка следваща дума започва с главна буква: firstName, totalPrice, isLoggedIn.
Скриптът по-долу декларира две променливи, прилага към тях петте аритметични оператора и записва всеки резултат на страницата. Опитайте сами:
<html>
<head>
<title>Variables!!!</title>
<script type="text/javascript">
var one = 22;
var two = 3;
var add = one + two;
var minus = one - two;
var multiply = one * two;
var divide = one/two;
document.write("First No: = " + one + "<br />Second No: = " + two + " <br />");
document.write(one + " + " + two + " = " + add + "<br/>");
document.write(one + " - " + two + " = " + minus + "<br/>");
document.write(one + " * " + two + " = " + multiply + "<br/>");
document.write(one + " / " + two + " = " + divide + "<br/>");
</script>
</head>
<body>
</body>
</html>
var срещу let срещу const в Modern JavaСценарий
Само var съществуваше, когато JavaСкриптът е написан за първи път и има две навика, които изненадват начинаещите: може да бъде предеклариран тихо и игнорира границите на блоковете. let и const са добавени, за да се коригират и двете. Таблицата по-долу поставя трите ключови думи една до друга.
| Поведение | Var | нека | конст |
|---|---|---|---|
| Обхват | Цялата функция | Ограждащ блок | Ограждащ блок |
| Може да бъде преназначен | Да | Да | Не |
| Може да се декларира отново в същия обхват | Да | Не | Не |
| Задължителна стойност на реда на декларацията | Не | Не | Да |
| Прочетете преди обявяването му | Връща неопределено | Грешка в референцията | Грешка в референцията |
Един прост навик обхваща почти всеки случай: посягайте към конст първо, преминете към нека момента, в който дадена стойност наистина трябва да се промени, като например брояч в един от JavaЦикли на скриптовеи запазете var за четене на стар код, вместо за писане на нов код.
Променлив обхват и повдигане JavaСценарий
Обхватът (scope) определя кои части от скрипта могат да виждат променлива. Декларацията var принадлежи на функцията, която я съдържа, така че тя екранира всеки if блок или for блок вътре в тази функция. Декларацията let или const принадлежи на двойката скоби, в които се намира, и изчезва извън тях.
function demo() { if (true) { var wide = "visible throughout demo()"; let narrow = "visible only inside these braces"; } console.log(wide); console.log(narrow); }
Първият console.log отпечатва своя низ. Вторият хвърля ReferenceError, защото narrow вече не съществува след края на if блока.
Подемно е втората половина на историята. JavaСкриптът регистрира всяка декларация в дадена област на видимост, преди да изпълни и един ред от тази област. Името на var е регистрирано и е зададено на undefined, така че четенето ѝ по-рано е законно, но безполезно. Името на let или const е регистрирано без стойност, а празнината между началото на блока и реда на декларацията се нарича временна мъртва зона.
console.log(a); var a = 1; console.log(b); let b = 2;
Първият ред отпечатва undefined. Третият ред завършва с „Cannot access 'b' before initialization“ — грешката, която прави let по-безопасен от var, защото сочи към истинската грешка, вместо да я скрива.
Често срещани грешки при деклариране JavaСкриптови променливи
Пет съобщения представляват по-голямата част от конзолния изход, който начинаещите виждат, докато изучават променливи. Всяко от тях посочва конкретна причина, така че решението обикновено е на един ред.
| Съобщение от конзолата | Причина | Фиксирайте |
|---|---|---|
| Синтаксична грешка: Идентификаторът „x“ вече е деклариран | let или const, използвани два пъти за едно и също име в един блок | Използвайте повторно съществуващата променлива или преименувайте втората |
| TypeError: Присвояване на постоянна променлива | На константа е дадена нова стойност | Декларирайте го с let, ако стойността трябва да се промени |
| ReferenceError: Не е възможен достъп до 'x' преди инициализация | Вътре във времевата мъртва зона е прочетен let или const | Преместете текста под реда на декларацията |
| ReferenceError: x не е дефиниран | Името никога не е било обявено или е било написано неправилно | Декларирайте го или коригирайте правописа и главните и малките букви |
| „undefined“ се появява там, където се очакваше стойност | Променливата е декларирана, но никога не е била присвоена | Задайте стойност преди първото четене |
Добавянето на „use strict“ в началото на файла превръща тихата версия на четвъртия случай – присвояване на име, което никога не е било декларирано – във видима грешка, поради което тя е част от всеки нов скрипт. Същите правила за променливите се пренасят непроменени към масиви, обектии код от страна на сървъра, написан за Node.js.
