JavaScript. Променливи (глобални, локални, константи). Eval е зло

Когато една програма трябва да съхрани стойност, за да я използва по-късно, тази стойност се присвоява на променлива. Променливата е просто символно име за стойност, което предоставя възможността да се получи стойността по име, т.е. когато дадена програма посочи името на променлива, стойността се замества с нея.

Променливата получи името си поради факта, че стойността й може да се променя по време на изпълнение на програмата.

Константи

Константата е просто символично име за стойност. Константата ви позволява да се обърнете към стойност по име, което означава, че когато дадена програма посочи името на константа, стойността се замества вместо това. Константите се използват за съхраняване на данни, които не трябва да се променят по време на изпълнение на програмата.

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

Const MAX = 10;

След като константа е създадена, опитът да я предефинирате в променлива или опитът да присвоите стойност на съществуваща константа ще доведе до грешка.

Защо са необходими променливи и константи?

Променливите и константите ви помагат програмен кодпо-ясно. Нека да разгледаме малък пример:

Обща цена = 2,42 + 4,33; // Обща цена

Числата тук могат да означават всичко. За да стане ясно какво точно се обобщава тук, стойността 2.42 може да бъде присвоена на променливата (или постоянна) candyPrice (цена на бонбони), а 4.33 на променливата (или постоянна) oilPrice (цена на петрола):

TotalPrice = candyPrice + oilPrice;

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

Освен това променливите и константите помагат да се спести време при отстраняване на грешки в скрипт. Вместо да използвате един и същ литерал навсякъде, можете да го присвоите на променлива (или константа) в началото на скрипта и след това да използвате променливата (или константата) вместо литерала в останалата част от кода на скрипта. Ако по-късно се вземе решение за промяна на стойността, тогава промените в кода ще трябва да бъдат направени не на няколко места, а само на едно място - където стойността е била присвоена на променливата (или константата).

Обхват на константите

За константите важат същите правила, както и за променливите, декларирани с ключовата дума let:

Const MAX = 5; // Глобална константа ( const MAX = 10; // Блокова константа console.log(MAX); // 10 ) console.log(MAX); // 5 foo(); // 15 console.log(MAX); // 5 функция foo() ( const MAX = 15; // Локална константа console.log(MAX); )

Константи и референтни типове

Когато на константа е присвоена стойност от референтен тип, референцията към стойността става неизменна, а самата стойност остава променлива:

Const obj = (a: 5); obj.a = 10; console.log(obj.a); // 10

В тази статия ще научите как да определите константи в JavaScript с помощта ключова думаконст.

ES6осигурява нов начиндекларации на константи с помощта на ключова дума конст. Ключова дума констсъздава препратка към стойност само за четене.

Const VARIABLE_NAME = стойност;

По споразумение, Константните идентификатори на JavaScript са с главни букви.

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

Променливи, декларирани с ключова дума некаса променлив. Това означава, че можете да промените техните стойности по всяко време, както е показано в следния пример.

Нека v = 10;
v = 20;
v = v + 5;
console.log(v); // 35

Въпреки това, променливи, създадени с ключовата дума конст, са непроменими. С други думи, не можете да ги присвоите отново на различни стойности. Опитът за повторно присвояване на постоянна променлива ще доведе до грешка в типа TypeError .

Const TAX = 0,1;
ДАНЪК = 0,2; //TypeError

Освен това, променлива, която е декларирана с помощта на ключовата дума const,трябва незабавно да се инициализира със стойност. Следният пример извиква SyntaxError(синтактична грешка) поради липсата на инициализатор в декларацията на постоянна променлива.

Const ЧЕРВЕНО; // SyntaxError

Както споменахме по-рано, като променливи, декларирани с ключовата дума нека, променливи, декларирани с ключова дума const,имат блоков обхват.

Това е всичко и в следващата статия ще говорим за използването на ключовата дума констс обектни литерали в JavaScript.

Последна актуализация: 05.04.2018 г

Променливите се използват за съхраняване на данни в програма. Променливите са предназначени да съхраняват някои временни данни или данни, които могат да променят стойността си по време на работа. Ключовите думи var и let се използват за създаване на променливи. Например, нека декларираме променливата myIncome:

Var myIncome; // друга опция нека myIncome2;

Всяка променлива има име. Името е произволен низ от буквено-цифрови знаци, долна черта (_) или знак за долар ($) и имената не трябва да започват с цифри. Тоест можем да използваме букви, цифри и долна черта в името. Всички други знаци обаче са забранени.

например, правилни именапроменливи:

$commission someVariable product_Store earnings2 myIncome_from_deposit

Следните имена са неправилни и не могат да се използват:

222lol @someVariable my%percent

Освен това не можете да давате имена на променливи, които съответстват на запазени ключови думи. В JavaScript няма много ключови думи, така че това правилоне е трудно за следване. Например следното име би било неправилно, защото for е ключова дума в JavaScript:

Вариант за;

Списък със запазени думи в JavaScript:

abstract, boolean, break, byte, case, catch, char, class, const, continue, debugger, default, delete, do, double, else, enum, export, extends, false, final, finally, float, for, function, goto, if, implements, import, in, instanceof, int, inteface, long, native, new, null, package, private, protected, public, return, short, static, super, switch, synchronized, this, throw, throws, преходно, вярно, опитайте, typeof, var, volatile, void, while, with

Когато именувате променливи, имайте предвид, че JavaScript е чувствителни към главни и малки буквиезик, тоест в следния код са декларирани две различни променливи:

Var myIncome; var MyIncome;

Можете да дефинирате няколко променливи наведнъж, разделени със запетаи:

Var myIncome, процент, сума; нека a, b, c;

Използване на знака за равенство (наричан още оператор за присвояване) можете да присвоите произволна стойност на променлива:

Var доход = 300; нека цена = 76;

Процесът на присвояване на начална стойност на променлива се нарича инициализация.

Сега променливата доход ще съхранява числото 300, а променливата цена ще съхранява числото 76.

Страхотното нещо при променливите е, че можем да променим тяхната стойност:

Var доход = 300; доход = 400; console.log(доходи); нека цена = 76; цена = 54; console.log(цена);

Константи

Използвайки ключовата дума const, можете да дефинирате константа, която, подобно на променлива, съхранява стойност, но тази стойност не може да бъде променена.

const rate = 10;

Ако се опитаме да променим стойността му, ще срещнем грешка:

const rate = 10; процент = 23; // грешка, процентът е константа, така че не можем да променим стойността му

Също така си струва да се отбележи, че тъй като не можем да променим стойността на константа, тя трябва да бъде инициализирана, тоест, когато я дефинираме, трябва да й предоставим първоначална стойност. Ако не направим това, отново ще срещнем грешка:

постоянна скорост; // грешка, скоростта не е инициализирана

Функцията е блок от код, който изпълнява действие или връща стойност. Функциите са потребителски код, който може да се използва повторно; Следователно, благодарение на функциите, програмите стават модулни и по-продуктивни.

Този урок предлага няколко начина за дефиниране и извикване на функция и използване на функционални параметри в JavaScript.

Определение на функцията

Функциите се дефинират или декларират с помощта на ключовата дума function. Синтаксисът на функцията в JavaScript изглежда така:

функция nameOfFunction() (
// Код за изпълнение
}

Декларацията на функцията започва с ключовата дума function, последвана от името на функцията. Имената на функциите следват същите правила като имената на променливите: те могат да съдържат букви, цифри, долна черта и знаци за долар и често се изписват с главни букви. Името е последвано от набор от скоби, които могат да се използват за незадължителни параметри. Функционалният код се съдържа във фигурни скоби, като оператор for или if.

Както може би сте забелязали, стойността на параметъра име не се присвоява в кода; това се прави при извикването на функцията. При извикване на функцията потребителското име се предава като аргумент. Аргументът е действителната стойност, която се предава на функцията (в този случай потребителското име, например 8host).

// Извикване на функцията greet с "8host" като аргумент
greet("8host");

Стойността 8host се предава на функцията чрез параметъра name. Сега параметърът име ще представлява тази стойност в тази функция. Кодът за файла greetUser.js изглежда така:

// Инициализиране на персонализирана поздравителна функция
функция greet(име) (
console.log(`Здравей, $(име)!`);
}
// Извикване на функцията greet с "8host" като аргумент
greet("8host");

Когато стартирате тази програма, ще получите следния резултат:

Сега знаете как да използвате повторно функция.

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

Връщане на стойности

Можете да използвате повече от един параметър във функция. Можете да предадете няколко стойности на функция и да върнете стойност. Например, създайте файл sum.js и декларирайте функция в него, която ще намери сумата от две стойности, x и y.

// Инициализиране на функция за добавяне
функция add(x, y) (
връщане x + y;
}

добавяне (9, 7);

Този код дефинира функция с параметри x и y. След това функцията получава стойностите 9 и 7. Стартирайте програмата:

Програмата ще събере получените стойности 9 и 7 и ще върне резултата 16.

Когато се използва ключовата дума return, функцията спира да се изпълнява и връща стойността на израза. В този случай браузърът ще покаже стойността в конзолата, но това не е същото като използването на console.log() за извеждане към конзолата. Когато е извикана, функцията извежда стойност на мястото, откъдето е извикана. Тази стойност може да се използва или да се постави в променлива.

Функционални изрази

В предишния раздел декларирахте функция, която събира две числа и връща получената стойност. Можете също да създадете израз на функция, като присвоите функция на променлива.

Използвайте предишната функция, за да приложите получената стойност към сумарната променлива.

// Присвояване на функция за добавяне към константа на сумата
const sum = функция add(x, y) (
връщане x + y;
}
// Извикване на функция за намиране на сумата
сума (20, 5);
25

Сега константната сума е функция. Този израз може да бъде съкратен, като се превърне в анонимна функция (така се наричат ​​функции без параметър име). В момента функцията се нарича add, но във функционалните изрази името обикновено се пропуска.

// Присвояване на функция на сумарна константа
константна сума = функция (x, y) (
връщане x + y;
}
// Извикване на функция за намиране на сумата
сума (100, 3);
103

Сега функцията вече няма име, стана анонимна.

Наименуваните функционални изрази могат да се използват за отстраняване на грешки.

Функции на стрелките

Досега функциите бяха дефинирани с помощта на ключовата дума function. Има обаче по-нов и по-кратък начин за дефиниране на функция - функциите със стрелки на ECMAScript 6. Функциите със стрелки са представени със знак за равенство, последван от знак за по-голямо от: =>.

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

// Дефиниране на функция за умножение
const умножение = (x, y) => (
връщане x * y;
}

умножение (30, 4);
120

Вместо да пишете функция, можете просто да използвате => символи.

Ако функцията има само един параметър, скобите могат да бъдат пропуснати. В следващия пример функцията поставя x на квадрат, така че се нуждае само от едно число като аргумент.

// Дефиниране на квадратна функция
const квадрат = x => (
връщане x * x;
}
// Извикване на функция за намиране на продукт
квадрат (8);
64

Забележка: Ако функцията стрелка няма параметри, трябва да добавите празни скоби ().

Функциите със стрелки, които се състоят само от израз за връщане, могат да бъдат съкратени. Ако функцията се състои само от един върнат ред, можете да пропуснете фигурните скоби и оператора return, както в примера по-долу.

// Дефиниране на квадратна функция
const квадрат = x => x * x;
// Извикване на функция за намиране на продукт
квадрат (10);
100

Заключение

Този урок ви запознава с декларирането на функции, функционални изрази и функции със стрелки, връщането на стойности и присвояването на функционални стойности на променливи.

Функцията е блок от код, който връща стойност или извършва действие.

Тагове:

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

Пример за деклариране на константа с помощта на променлива:

var DAYSINWEEK = 7;

var DAYSINWEEK = 7;

Това е едновременно опасно и непрактично, защото ви позволява да промените стойността на променливата DAYSINWEEK във вашия скрипт по всяко време. Разработчиците са измислили различни начини за разграничаване на променливи, които привидно са константи, от обикновени променливи в JavaScript, вариращи от именуване на променливи САМО с ГЛАВНИ БУКВИ (най-добрата практика) до решения, за които ще говоря по-късно. За щастие, в най-новата версия ECMAScript (спецификация, която е стандарт) въведе тази константа:

JavaScript. Бърз старт

const DAYSINWEEK = 7;

const DAYSINWEEK = 7;

И сега DAYSINWEEK може да бъде достъпен като променлива, но никога няма да можете да промените нейната стойност:

console.log(DAYSINWEEK); > 7 ДНИ В СЕДМИЦАТА = 8; > грешка

конзола. дневник (DAYSINWEEK);

ДНИ В СЕДМИЦА = 8;

> грешка

След като константа бъде декларирана (константите трябва да бъдат инициализирани с ключовата дума const, последвана от име на константа, което следва правилата за именуване на променливи), нейното име ще бъде запазено: вече не можете да именувате променлива DAYSINWEEK и да имате константа със същото име , или обратното.

Ключовата дума const има добра поддръжка в съвременните браузъри: IE11 и Spartan, Firefox 31+, Opera 12+, Safari 5.1.7+, iOS 7 и по-нови, заедно с Chrome 36+. Има обаче няколко важни предупреждения:

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

JavaScript. Бърз старт

Научете основите на JavaScript с практически пример как да създадете уеб приложение.

Константите не създават нов обхват в Webkit. Тези. константите могат да бъдат видими извън текущия обхват.

Firefox 35 и по-стари версии ви позволяват да променяте стойността на const в движение. Това е фиксирано в Версии на Firefox 36+.

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

Възможно ли е да се използва ключовата дума const в реални проекти сега?

Изборът дали да използвате или не ключовата дума const във вашия код ще зависи от няколко фактора: най-важното е какви версии на браузърите използват посетителите на вашия сайт, тъй като използването на ключовата дума const ще се счита за грешка в браузъри като IE10 . Ако искате да използвате ключовата дума const в разработката, но не сте готови да я използвате в реални проекти, тогава имате няколко възможности:

Вариант 1: използвайте транспилер („транспилер“)

Transpilers, както подсказва името, трансформират вашия код по време на компилиране на друг език: в този случай от версията на спецификацията ES6 (която въвежда ключовата дума const) в ES5. Това ви позволява да пишете код в повече нова версияезик, но действителният проект ще използва версия, която е съвместима с по-широк набор от браузъри. Еди Османи композира

Връзка