Өзгөрмөлөр
Өзгөрмөлөр
JavaScript тиркемеси адатта маалымат менен иштеши керек. Мисалы:
Интернет дүкөнү - Маалымат сатуу үчүн буюмдарды жана соода арабасын камтышы мүмкүн.
Чат - Маалымат колдонуучуларды, билдирүүлөрдү жана башкаларды камтышы мүмкүн.
Бул маалыматты сактоо үчүн өзгөрмөлөр колдонулат.
Өзгөрмө
Өзгөрмө маалыматтар үчүн "атталган дүкөн" болуп саналат. Биз өнүмдөрдү, конокторду жана башка маалыматтарды сактоо үчүн өзгөрмөлөрдү колдоно алабыз.
JavaScriptте өзгөрмө түзүү үчүн let ачкыч сөзүн колдонуңуз.
Төмөнкү let "message" деп аталган өзгөрмө түзөт (башкача айтканда: жарыялайт же аныктайт):
Let message;
Эми сиз дайындоо операторунун жардамы менен ага маалыматтарды киргизе аласыз =:
@A@
Let message;
message = 'hello'; // 'hello' сапты message деп аталган өзгөрмөдө сактаңыз
@A@
Сап өзгөрмө менен байланышкан эстутум аймагында сакталат. Биз ага өзгөрмө аты менен кире алабыз:
@A@
Let message ;
message = 'helllo!';
alert (message); // өзгөрмөнүн мазмунун көрсөтөт
@A@
Кыскасы, сиз өзгөрмөнүн декларациясын жана маалыматтарды бир сапта жазсаңыз болот:
@A@
Let message = 'Салам!'; // өзгөрмө аныктоо жана ага маани берүү
alert (message); // Салам!
@A@
Биз бир эле сапта бир нече өзгөрмөлөрдү жарыялай алабыз:
@A@
let user = 'John', age = 25, message = 'Hello';
@A@
Бул ыкма кыскараак көрүнүшү мүмкүн, бирок биз аны сунуштабайбыз. Жакшыраак окуу үчүн, ар бир өзгөрмөнү жаңы сапта жарыялаңыз.Көп сап версиясы бир аз узунураак, бирок окуу оңой:
@A@
let user = 'John';
let age = 25;
let message = 'Салам';
@A@
Кээ бир адамдар бул көп сызык стилинде бир нече өзгөрмөлөрдү аныкташат:
@A@
let user = 'John',
age = 25
message = 'Салам';
@A@
...Же саптын башына үтүр коюлса да:
@A@
Let user = 'Джон'
, age = 25
, message = 'Салам';
@A@
Негизи, бул варианттардын баары бирдей иштейт. Демек, бул жеке табит жана эстетика маселеси.
let ордуна var
Эски скрипттерде let ордуна башка ачкыч сөздү таба аласыз: var:
varmessage = 'Салам';
var ачкыч сөзү let менен дээрлик бирдей. Бул өзгөрмө жарыялайт, бирок бир аз башкача, "мураст" жол менен.
Let жана var ортосунда тымызын айырмачылыктар бар, бирок алар биз үчүн азырынча маанилүү эмес. Биз аларды эскирген "var" ачкыч сөзү бөлүмүндө кеңири чагылдырабыз.
жашоодон окшоштук
Эгер биз аны уникалдуу аталышы бар маалыматтар үчүн "куту" катары карасак, "өзгөрмө" түшүнүгүн оңой түшүнө алабыз.
Мисалы, кабар өзгөрмөсүн "message" аталышы жана "Салам!" мааниси бар кутуча катары кароого болот. ичинде:
Биз кутуга каалаган баасын сала алабыз.
Ошондой эле биз аны каалаганча өзгөртө алабыз:
@A@
let message;
message = 'Салам!';
message = 'Дүйнө!'; // мааниси өзгөрдү
alert (message);
@A@
Маани өзгөргөндө, эски маалыматтар өзгөрмөдөн алынып салынат:
Ошондой эле биз эки өзгөрмө жарыялап, маалыматтарды биринен экинчисине көчүрө алабыз
.let hello = 'hello world!';
Let message;
// hello өзгөрмөсүнөн 'Hello world' маанисин message өзгөрмөсүнө көчүрүңүз
message = hello;
// азыр эки өзгөрмө бир эле маалыматтарды камтыйт
alert (hello); // Hello world!
alert (message); // Hello world!
Кайра жарыялоо катага алып келет
Өзгөрмө бир гана жолу жарыяланышы мүмкүн.
Бир эле өзгөрмөнү кайра жарыялоо ката болуп саналат:
let message = "Бул";
// "let" ачкыч сөзүн кайталоо катага алып келет
let message = "Башка"; // SyntaxError: 'message' мурунтан эле жарыяланган
Ошондуктан, сиз өзгөрмө бир жолу гана жарыяланып, андан кийин аны уруксатсыз колдонушуңуз керек.
Функционалдык программалоо тилдери
Белгилей кетчү нерсе, өзгөрмөнүн маанисин өзгөртүүгө тыюу салган Scala же Erlang сыяктуу функционалдык программалоо тилдери бар.
Мындай тилдерде бир жолу "кутуда" сакталган маани түбөлүккө ошол жерде калат. Эгер башка нерсени сактоо керек болсо, тил бизди жаңы кутуча түзүүгө мажбурлайт (жаңы өзгөрмө жарыялоо). Биз эски өзгөрмө колдоно албайбыз.
Бул бир караганда бир аз кызыктай сезилиши мүмкүн болсо да, бул тилдер олуттуу өнүктүрүү үчүн абдан ылайыктуу болуп саналат. Мындан тышкары, бул чектөө белгилүү бир артыкчылыктарды берет параллелдүү эсептөө сыяктуу аймак бар. Мындай тилди үйрөнүү (сиз аны жакын арада колдонууну пландабасаңыз да) көз карашыңызды кеңейтүү үчүн сунушталат.
Өзгөрмө аттары
JavaScript өзгөрмө аттарга байланыштуу эки чектөөгө ээ:
Өзгөрмө аты тамгаларды, сандарды же $ жана _ символдорун гана камтышы керек.
Биринчи символ сан болбошу керек.
Жарактуу ысымдардын мисалдары:
let username;
let test123;
Эгерде ат бир нече сөздү камтыса, адатта, төө кейпинин белгиси колдонулат, башкача айтканда, сөздөр биринин артынан бири келет, мында ар бир кийинки сөз баш тамга менен башталат: myVeryLongName.
Кызыгы, доллардын белгиси '$' жана астынкы сызык '_' да аталыштарда колдонулушу мүмкүн. Алар тамгалар сыяктуу, эч кандай өзгөчө мааниси жок катардагы каармандар.
Бул ысымдар жарактуу:
let$=1; // "$" аттуу өзгөрмө жарыяланды
let_=2; // жана эми "_" аттуу өзгөрмө
alert($ + _); // 3
Жараксыз өзгөрмө аталыштарынын мисалдары:
let 1а; // сан менен башталбайт
let my-name; // атында дефис '-' коюуга болбойт
Case маанилүү
Apple жана APPLE деп аталган өзгөрмөлөр эки башка өзгөрмөлөр.
Латын эмес тамгаларга уруксат берилет, бирок сунушталбайт
Кириллица же иероглифтерди кошкондо каалаган тилди колдонсо болот, мисалы:
let name = '...';
let我 = '...';
Техникалык жактан бул жерде эч кандай ката жок, мындай аттарга уруксат берилген, бирок өзгөрмө аттарда англисче колдонуунун эл аралык салты бар. Кичинекей сценарий жазсак да, алдыда узак өмүр сүрүшү мүмкүн. Башка өлкөлөрдөн келгендер аны бир нече жолу окууга туура келиши мүмкүн.
сакталган ысымдар
Өзгөрмө аттар катары колдонулбай турган сакталган сөздөрдүн тизмеси бар, анткени алар тилдин өзү тарабынан колдонулат.
Мисалы: let, class, return жана function сакталган.Төмөндөгү код синтаксис катасын берет:
Let let = 5; // "Let" өзгөрмөсүн атай албайт, ката!
Let return = 5; // ошондой эле "return" өзгөрмөсүн атай албайт, ката!
Use strict колдонбостон өзгөрмө түзүү
Адатта, биз аны колдонуудан мурун өзгөрмө аныкташыбыз керек. Бирок, эски күндөрдө, let'ти колдонбостон жөн гана маани берүү менен өзгөрмө түзүүгө техникалык жактан мүмкүн болгон. Бул эски скрипттерге шайкеш келүүнү камсыз кылуу үчүн файлдарыбызга катуу колдонууну кошпосок иштей берет.
// Эскертүү: бул мисалда "use strict" колдонулган эмес
@A@
num = 5; // эгерде "num" өзгөрмөсү мурда жок болсо, анда ал түзүлөт
alert (num); // 5
@A@
Бул катаал режимде катага алып келген жаман практика:
@A@
"use strict";
num = 5; // ката: num аныкталган эмес
@A@
Туруктуулар
const, башкача айтканда, өзгөрүлгүс өзгөрмө жарыялоо үчүн let ордуна const колдонуңуз:
const myBirthday = '4/18/1982';
const менен жарыяланган өзгөрмөлөр "consts" деп аталат. Аларды өзгөртүү мүмкүн эмес. Муну кылууга аракет катага алып келет:
const myBirthday = '4/18/1982';
myBirthday = '01/01/2001'; // ката, константты кайра жазуу мүмкүн эмес!
Эгерде программист өзгөрмө эч качан өзгөрбөйт деп ишенсе, ал буга кепилдик бере алат жана аны const аркылуу жарыялоо менен баарына ачык жеткире алат.
Баш тамга константалары
Скрипт аткарылганга чейин белгилүү болгон эстеп калуу кыйын баалуулуктар үчүн лакап ат катары константаларды колдонуу кеңири таралган практика.
Мындай туруктуулардын аттары баш тамгалар жана астынкы сызыктар менен жазылат.Мисалы, "он алтылык форматта" ар кандай түстөр үчүн константаларды жасайлы:
@A@
const COLOR_RED = "#F00";
const COLOR_GREEN = "#0F0";
const COLOR_BLUE = "#00F";
const COLOR_ORANGE = "#FF7F00";
@A@
// ...бизге түс тандоо керек болгондо
@A@
let color = COLOR_ORANGE;
alert (color); // #FF7F00
@A@
Артыкчылыктары:
COLOR_ORANGE "#FF7F00"ге караганда эстеп калуу бир топ жеңил.
"#FF7F00" киргизүүдө ката кетирүү COLOR_ORANGE киргизүүгө караганда алда канча оңой.
Кодду окуп жатканда COLOR_ORANGE #FF7F00гө караганда алда канча ачык болот.
Туруктуулар үчүн качан баш тамгаларды колдонушубуз керек жана аларды качан атасак туура болот? Муну да чечели.
"Туруктуу" аталышы жөн гана өзгөрмөнүн мааниси эч качан өзгөрбөй турганын билдирет. Бирок аткарылганга чейин белгилүү болгон константалар бар (мисалы, кызыл үчүн он алтылык маани) жана скрипттин аткарылышы учурунда эсептелген, бирок баштапкы дайындоодон кийин өзгөрбөгөн туруктуулар бар.
Мисалы:
const pageLoadTime = /* веб-баракты жүктөөгө сарпталган убакыт */;
pageLoadTime мааниси барак жүктөлмөйүнчө белгисиз, андыктан анын аты баш тамгалардын ордуна кадимки тамгалар менен жазылат. Бирок ал дагы эле туруктуу, анткени дайындоодон кийин өзгөрбөйт.
Башка сөз менен айтканда, баш тамгалар менен жазылган туруктуулар " үчүн лакап ат катары гана колдонулат.
Туура ысымдарды ойлон
Өзгөрмөлөр жөнүндө сөз кылып жатып, дагы бир өтө маанилүү нерсе бар экенин белгилей кетүү керек.
Өзгөрмөнүн аталышы так жана түшүнүктүү мааниге ээ болушу керек, анда кандай маалыматтар сакталганы жөнүндө сөз болот.
Өзгөрмөлөрдү атоо эң маанилүү жана татаал программалоо жөндөмдөрүнүн бири. Өзгөрмөлөрдүн аттарын тез карап көрүү кайсы кодду жаңыдан, кайсынысын тажрыйбалуу иштеп чыгуучу жазганын көрсөтө алат.
Чыныгы долбоордо көп убакыт нөлдөн баштап таптакыр жаңы нерсени жазууга караганда, учурдагы код базасын өзгөртүүгө жана кеңейтүүгө жумшалат. Бир нече убакыт өткөндөн кийин кодго кайтып келгенде, жакшы белгиленген маалыматты табуу оңой болот. Же, башкача айтканда, өзгөрмөлөр жакшы атка ээ болгондо.
Сураныч, аны жарыялоодон мурун туура өзгөрмө аталышы жөнүндө ойлонууга убакыт бөлүңүз. Муну кыл, ошондо сага сыйлык берилет.
Бир нече жакшы эрежелер:
UserName же ShoppingCart сыяктуу окууга оңой аттарды колдонуңуз.
Эмне кылууну так билбесеңиз, a, b, c сыяктуу кыскартууларды же кыска аттарды колдонуудан качыңыз.
Аты-жөнүн мүмкүн болушунча сыпаттоочу жана кыска кылып жазыңыз. Жаман аттардын мисалдары: data жана value. Бул ысымдар эч нерсе билдирбейт. Аларды коддун контекстинен өзгөрмө кандай маалыматтарды сактай тургандыгы айкын болгондо гана колдонсо болот.
Колдонулган терминдер боюнча командаңыз менен макулдашып алыңыз. Эгер сайтка кирүүчү "user" деп аталса, анда биз аны менен байланышкан өзгөрмөлөрдү, мисалы, currentVisitor же newManInTown эмес, учурдагыUser же newUser деп аташыбыз керек.Жөнөкөй угулат? Чынында эле, бул чындык, бирок иш жүзүндө сүрөттөмө жана кыска өзгөрмө аттарын түзүү көп ойлонууну талап кылат. Чара көрүү.
Кайра колдонуу же жаңы өзгөрмө түзүү?
Жана акыркы эскертүү. Жалкоо программисттер бар, алар жаңы өзгөрмөлөрдү жарыялоонун ордуна, бар болгондорун кайра колдонушат.
Натыйжада, алардын өзгөрмөлөрү адамдар этикеткаларын өзгөртпөстөн бир нерселерди ыргыткан кутучалар сыяктуу. Азыр кутучанын ичинде эмне бар? Ким билет? Биз жакындап, текшеришибиз керек.
Мындай программисттер өзгөрмөлөрдү жарыялоодо бир аз үнөмдөйт, бирок мүчүлүштүктөрдү оңдоодо он эсе көп жоготот.
Кошумча өзгөрмө жаман эмес, жакшы.
Заманбап JavaScript минификаторлору жана серепчилери кодду жакшы оптималдаштырат, ал аткаруу көйгөйлөрүн жаратпайт. Ар кандай маанилер үчүн ар кандай өзгөрмөлөрдү колдонуу, ал тургай, кыймылдаткычка кодуңузду оптималдаштырууга жардам берет.
Бардыгы
Биз var, let же const ачкыч сөздөрүн колдонуп, маалыматтарды сактоо үчүн өзгөрмөлөрдү жарыялай алабыз.
келгиле, жарыялоонун заманбап жолу.
var - жарыялоонун эскирген жолу. Биз аны демейде такыр колдонбойбуз, бирок сизге керек болсо, эскирген "var" ачкыч сөзү бөлүмүндөгү let-тен тымызын айырмачылыктарды карап чыгабыз.
const let сыяктуу, бирок өзгөрмөнүн маанисин өзгөртүүгө болбойт.
Өзгөрмөлөрдүн аталышы алардын ичинде эмне бар экенин оңой түшүнө тургандай болушу керек.
Тапшырмалар :
Өзгөрмөлөр менен иштөө
Эки өзгөрмө жарыялаңыз: admin жана user.
Ат өзгөрмөсүнө "Джон" сабын жаз.
Өзгөрмө аталышындагы маанини администраторго көчүрүңүз.Эскертүү функциясын колдонуу менен администратордун маанисин көрсөтүү ("Джон" көрсөтүлүшү керек).
чечим
Туура ысымдарды ойлон
маанилүүлүгү: 3
Биздин планетанын аталышы үчүн өзгөрмө түзүңүз. Сен аны эмне деп атайт элең?
Учурдагы сайтка келген адамдын атын кармап турган өзгөрмө түзүңүз. Мындай өзгөрмөнү кантип атайт элеңиз?
чечим
Туруктуу аталыштар үчүн кандай тамгалар (башкы же кичине) колдонулушу керек?
Төмөнкү кодду карап көрүңүз:
const birthday = '4/18/1982';
const age = someCode(bithday);
Бизде туулган күн константасы бар жана бизде жашыбыз бар, ал туулган күндөгү маанини колдонуу менен кандайдыр бир коддун жардамы менен эсептелет (бул учурда деталдар маанилүү эмес, ошондуктан код каралбайт).
Туулган күн үчүн баш тамгаларды колдонуу туурабы? Жана жашы боюнча? Же бир эле учурда эки өзгөрмө үчүнбү?
const BITHDAY = '4/18/1982'; // баш тамгалар колдонулабы?
const AGE = someCode(BITHDAY); // жана бул жерде?