Ìîíèñòà (
CommandButton) âñå çàïèñè àâòîðà
6. Îïåðàòîðû
6.1. Êîììåíòàðèè
 JavaScript äîïóñòèìû äâà âèäà îïåðàòîðà êîììåíòàðèÿ:
// — îäíà ñòðîêà ñèìâîëîâ, ðàñïîëîæåííàÿ ñïðàâà îò ýòîãî îïåðàòîðà, ñ÷èòàåòñÿ êîììåíòàðèåì;
/* …*/ — âñå, ÷òî çàêëþ÷åíî ìåæäó /* è */ ñ÷èòàåòñÿ êîììåíòàðèåì; ñ ïîìîùüþ ýòîãî îïåðàòîðà ìîæíî âûäåëèòü íåñêîëüêî ñòðîê â êà÷åñòâå êîììåíòàðèÿ.
6.2. Àðèôìåòè÷åñêèå îïåðàòîðû
Àðèôìåòè÷åñêèå îïåðàòîðû, òàêèå êàê ñëîæåíèå, óìíîæåíèå è ò. ä., â JavaScript ìîãóò ïðèìåíÿòüñÿ ê äàííûì ëþáûõ òèïîâ. ×òî èç ýòîãî ïîëó÷àåòñÿ, ìû ðàññìîòðèì íåìíîãî ïîçæå. À ñåé÷àñ ïðîñòî ïåðå÷èñëèì èõ .
Àðèôìåòè÷åñêèå îïåðàòîðû
Îïåðàòîð Íàçâàíèå Ïðèìåð
+ Ñëîæåíèå X + Y
- Âû÷èòàíèå X - Y
* Óìíîæåíèå X * Y
/ Äåëåíèå X / Y
% Äåëåíèå ïî ìîäóëþ X % Y
++ Óâåëè÷åíèå íà 1 X++
-- Óìåíüøåíèå íà 1 Y--
6.3. Äîïîëíèòåëüíûå îïåðàòîðû ïðèñâàèâàíèÿ
 íà÷àëå ýòîãî ðàçäåëà ìû óæå ãîâîðèëè, ÷òî êðîìå îáû÷íîãî îïåðàòîðà ïðèñâàèâàíèÿ «=» èìåþòñÿ åùå ïÿòü äîïîëíèòåëüíûõ îïåðàòîðîâ, ñî÷åòàþùèõ â ñåáå äåéñòâèÿ îáû÷íîãî îïåðàòîðà ïðèñâàèâàíèÿ è àðèôìåòè÷åñêèõ îïåðàòîðîâ.
Îïåðàòîð Ïðèìåð Ýêâèâàëåíòíîå âûðàæåíèå
+= X+=Y X = X + Y
-= X-=Y X = X - Y
*= X*=Y X = X * Y
/= X/=Y X = X / Y
%= X%=Y X = X % Y
Ïîñêîëüêó äåéñòâèå àðèôìåòè÷åñêèõ îïåðàòîðîâ è îáû÷íîãî îïåðàòîðà ïðèñâàèâàíèÿ óæå èçâåñòíû, òî äîïîëíèòåëüíûå îïåðàòîðû ïðèñâàèâàíèÿ ìû íå áóäåì çäåñü ïîäðîáíî ðàññìàòðèâàòü. Îáðàòèì ëèøü âíèìàíèå íà ýêîíîìíûé ñïîñîá çàïèñè âûðàæåíèé, ïðåäîñòàâëÿåìûé ýòèìè îïåðàòîðàìè.
6.4. Îïåðàòîðû ñðàâíåíèÿ
Îïåðàòîð Íàçâàíèå Ïðèìåð
= = Ðàâíî X = =Y
!= Íå ðàâíî X != Y
> Áîëüøå, ÷åì X * Y
>= Áîëüøå èëè ðàâíî (íå ìåíüøå) X >= Y
< Ìåíüøå, ÷åì X < Y
<= Ìåíüøå èëè ðàâíî (íå áîëüøå) X <= Y
ÂÍÈÌÀÍÈÅ
Îïåðàòîð «ðàâíî» çàïèñûâàåòñÿ ñ ïîìîùüþ äâóõ ñèìâîëîâ «=» áåç ïðîáåëîâ ìåæäó íèìè.
6.5. Ëîãè÷åñêèå îïåðàòîðû
Ëîãè÷åñêèå äàííûå, îáû÷íî ïîëó÷àåìûå ñ ïîìîùüþ ýëåìåíòàðíûõ âûðàæåíèé, ñîäåðæàùèõ îïåðàòîðû ñðàâíåíèÿ, ìîæíî îáúåäèíÿòü â áîëåå ñëîæíûå âûðàæåíèÿ. Äëÿ ýòîãî èñïîëüçóþòñÿ ëîãè÷åñêèå (áóëåâñêèå) îïåðàòîðû —ëîãè÷åñêèå ñîþçû È è ÈËÈ, à òàêæå îïåðàòîð îòðèöàíèÿ ÍÅ. Íàïðèìåð, íàì ìîæåò ïîòðåáîâàòüñÿ ñôîðìèðîâàòü ñëîæíîå ëîãè÷åñêîå óñëîâèå ñëåäóþùåãî âèäà: «âîçðàñò íå áîëåå 30 è îïûò ðàáîòû áîëüøå 10, èëè þðèñò».  ýòîì ïðèìåðå åñòü è îïåðàòîðû ñðàâíåíèÿ, è ëîãè÷åñêèå îïåðàòîðû. Âûðàæåíèÿ ñ ëîãè÷åñêèìè îïåðàòîðàìè âîçâðàùàþò çíà÷åíèå true èëè false.
Îïåðàòîð Íàçâàíèå Ïðèìåð
! Îòðèöàíèå (ÍÅ) !X
&& È X&&Y
|| ÈËÈ X ||Y
Îïåðàòîð îòðèöàíèÿ «!» ïðèìåíÿåòñÿ ê îäíîìó îïåðàíäó, èçìåíÿÿ åãî çíà÷åíèå íà ïðîòèâîïîëîæíîå: åñëè X èìååò çíà÷åíèå true, òî !X âîçâðàùàåò çíà÷åíèå false è íàîáîðîò, åñëè X èìååò çíà÷åíèå false, òî !X âîçâðàùàåò çíà÷åíèå true. Íèæå â òàáëèöå óêàçàíî, êàêèå çíà÷åíèÿ âîçâðàùàþò îïåðàòîðû È è ÈËÈ ïðè ðàçëè÷íûõ ëîãè÷åñêèõ çíà÷åíèÿõ äâóõ îïåðàíäîâ.
X Y X&&Y X ||Y
true true true true
true false false true
false true false true
false false false false
Îïåðàòîðû «&&» è «||» åùå íàçûâàþò ëîãè÷åñêèì óìíîæåíèåì è ëîãè÷åñêèì ñëîæåíèåì ñîîòâåòñòâåííî. Åñëè âñïîìíèòü, ÷òî çíà÷åíèþ true ìîæíî ñîïîñòàâèòü 1, à çíà÷åíèþ false — 0, òî íåòðóäíî ïîíÿòü, êàê âû÷èñëÿþòñÿ çíà÷åíèÿ ýëåìåíòàðíûõ âûðàæåíèé ñ ëîãè÷åñêèìè îïåðàòîðàìè. Íóæíî òîëüêî ó÷åñòü, ÷òî â àëãåáðå ëîãèêè 1 + 1 = 1 (à íå 2). Àíàëîãè÷íî, îïåðàòîðó îòðèöàíèÿ ñîîòâåòñòâóåò âû÷èòàíèå èç åäèíèöû ÷èñëîâîãî ýêâèâàëåíòà ëîãè÷åñêîãî çíà÷åíèÿ îïåðàíäà.  ìàòåìàòèêå ëîãè÷åñêèå îïåðàöèè È è ÈËÈ íàçûâàþò ñîîòâåòñòâåííî êîíúþíêöèåé è äèçúþíêöèåé. Ñëîæíûå ëîãè÷åñêèå âûðàæåíèÿ, ñîñòîÿùèå èç íåñêîëüêèõ áîëåå ïðîñòûõ, ñîåäèíåííûõ îïåðàòîðàìè È è ÈËÈ, âûïîëíÿþòñÿ ïî òàê íàçûâàåìîìó ïðèíöèïó êîðîòêîé îáðàáîòêè. Äåëî â òîì, ÷òî çíà÷åíèå âñåãî âûðàæåíèÿ áûâàåò ìîæíî îïðåäåëèòü, âû÷èñëèâ ëèøü îäíî èëè íåñêîëüêî áîëåå ïðîñòûõ âûðàæåíèé, íå âû÷èñëÿÿ îñòàëüíûå. Íàïðèìåð, âûðàæåíèå x&&y âû÷èñëÿåòñÿ ñëåâà íàïðàâî; åñëè çíà÷åíèå x îêàçàëîñü ðàâíûì false, òî çíà÷åíèå y íå âû÷èñëÿåòñÿ, ïîñêîëüêó è òàê èçâåñòíî, ÷òî çíà÷åíèå âñåãî âûðàæåíèÿ ðàâíî false. Àíàëîãè÷íî, åñëè â âûðàæåíèè x || y çíà÷åíèå x ðàâíî true, òî çíà÷åíèå y íå âû÷èñëÿåòñÿ, ïîñêîëüêó óæå ÿñíî, ÷òî âñå âûðàæåíèå ðàâíî true. Äàííîå îáñòîÿòåëüñòâî òðåáóåò îñîáîãî âíèìàíèÿ ïðè òåñòèðîâàíèè ñëîæíûõ ëîãè÷åñêèõ âûðàæåíèé. Òàê, åñëè êàêàÿ-íèáóäü ñîñòàâíàÿ ÷àñòü âûðàæåíèÿ ñîäåðæèò îøèáêó, òî îíà ìîæåò îñòàòüñÿ íåâûÿâëåííîé, ïîñêîëüêó ýòà ÷àñòü âûðàæåíèÿ ïðîñòî íå âûïîëíÿëàñü ïðè òåñòèðîâàíèè.
6.6. Îïåðàòîðû óñëîâíîãî ïåðåõîäà
Âû÷èñëèòåëüíûé ïðîöåññ ìîæíî íàïðàâèòü ïî òîìó èëè äðóãîìó ïóòè â çàâèñèìîñòè îò òîãî, âûïîëíÿåòñÿ ëè íåêîòîðîå óñëîâèå, èëè íåò. Ýòîé öåëè ñëóæèò îïåðàòîðû óñëîâíîãî ïåðåõîäà if è switch. Îïåðàòîð if Îïåðàòîð óñëîâíîãî ïåðåõîäà if ïîçâîëÿåò ðåàëèçîâàòü ñòðóêòóðó óñëîâíîãî âûðàæåíèÿ åñëè …, òî …, èíà÷å … Ñèíòàêñèñ îïåðàòîðà if ïåðåõîäà ñëåäóþùèé:
if (óñëîâèå)
{ êîä, êîòîðûé âûïîëíÿåòñÿ, åñëè óñëîâèå âûïîëíåíî}
else
{ êîä, êîòîðûé âûïîëíÿåòñÿ, åñëè óñëîâèå íå âûïîëíåíî}
 ôèãóðíûõ ñêîáêàõ ðàñïîëàãàåòñÿ áëîê êîäà — íåñêîëüêî âûðàæåíèé. Åñëè â áëîêå èñïîëüçóåòñÿ íå áîëåå îäíîãî âûðàæåíèÿ, òî ôèãóðíûå ñêîáêè ìîæíî íå ïèñàòü. ×àñòü ýòîé êîíñòðóêöèè, îïðåäåëÿåìàÿ êëþ÷åâûì ñëîâîì else (èíà÷å), íåîáÿçàòåëüíà.  ýòîì ñëó÷àå îñòàåòñÿ òîëüêî ÷àñòü, îïðåäåëåííàÿ êëþ÷åâûì ñëîâîì if (åñëè):
if (óñëîâèå)
{ êîä, êîòîðûé ðàáîòàåò, åñëè óñëîâèå âûïîëíåíî}
Êîíñòðóêöèÿ îïåðàòîðà óñëîâíîãî ïåðåõîäà äîïóñêàåò âëîæåíèå äðóãèõ îïåðàòîðîâ óñëîâíîãî ïåðåõîäà. Óñëîâèå îáû÷íî ïðåäñòàâëÿåò ñîáîé âûðàæåíèå ëîãè÷åñêîãî òèïà, òî åñòü âûðàæåíèå, çíà÷åíèå êîòîðîãî åñòü true èëè false. Îáû÷íî ýòî ýëåìåíòàðíûå âûðàæåíèÿ ñ îïåðàòîðàìè ñðàâíåíèÿ. Îïåðàòîð switch Äëÿ îðãàíèçàöèè ïðîâåðêè áîëüøîãî êîëè÷åñòâà óñëîâèé âïîëíå äîñòàòî÷íî èñïîëüçîâàòü ðàññìîòðåííûé âûøå îïåðàòîð if. Îäíàêî â ñëó÷àå íåñêîëüêèõ óñëîâèé áîëåå óäîáíûì è íàãëÿäíûì îêàçûâàåòñÿ îïåðàòîð switch (ïåðåêëþ÷àòåëü). Îí îñîáåííî óäîáåí, åñëè òðåáóåòñÿ ïðîâåðèòü íåñêîëüêî óñëîâèé, êîòîðûå íå ÿâëÿþòñÿ âçàèìîèñêëþ÷àþùèìè. Ñèíòàêñèñ îïåðàòîðà switch âûãëÿäèò ñëåäóþùèì îáðàçîì:
switch (âûðàæåíèå) {
case âàðèàíò1:
êîä
[break]
case âàðèàíò2:
êîä
[break]
…
[default:
êîä]
}
Ïàðàìåòð âûðàæåíèå îïåðàòîðà switch ìîæåò ïðèíèìàòü ñòðîêîâûå, ÷èñëîâûå è ëîãè÷åñêèå çíà÷åíèÿ. Ðàçóìååòñÿ, â ñëó÷àå ëîãè÷åñêîãî âûðàæåíèÿ âîçìîæíû òîëüêî äâà âàðèàíòà. Êëþ÷åâûå ñëîâà (îïåðàòîðû) break è default íå ÿâëÿþòñÿ îáÿçàòåëüíûìè, ÷òî îòðàæåíî ñ ïîìîùüþ ïðÿìîóãîëüíûõ ñêîáîê. Çäåñü îíè ÿâëÿþòñÿ ýëåìåíòàìè îïèñàíèÿ ñèíòàêñèñà, è ïðè íàïèñàíèè îïåðàòîðîâ èõ óêàçûâàòü íå íóæíî. Åñëè îïåðàòîð break óêàçàí, òî ïðîâåðêà îñòàëüíûõ óñëîâèé íå ïðîèçâîäèòñÿ. Åñëè óêàçàí îïåðàòîð default, òî ñëåäóþùèé çà íèì êîä âûïîëíÿåòñÿ, åñëè çíà÷åíèå âûðàæåíèÿ âûðàæåíèå íå ñîîòâåòñòâóåò íè îäíîìó èç âàðèàíòîâ. Åñëè âñå âàðèàíòû âîçìîæíûõ çíà÷åíèé ïðåäóñìîòðåíû â îïåðàòîðå switch, òî îïåðàòîð default ìîæíî íå èñïîëüçîâàòü. Îïåðàòîð switch ðàáîòàåò ñëåäóþùèì îáðàçîì. Ñíà÷àëà âû÷èñëÿåòñÿ âûðàæåíèå, óêàçàííîå â êðóãëûõ ñêîáêàõ ñðàçó çà êëþ÷åâûì ñëîâîì switch. Ïîëó÷åííîå çíà÷åíèå ñðàâíèâàåòñÿ ñ òåì, êîòîðîå óêàçàíî â ïåðâîì âàðèàíòå. Åñëè îíè íå ñîâïàäàþò, òî êîä ýòîãî âàðèàíòà íå âûïîëíÿåòñÿ è ïðîèñõîäèò ïåðåõîä ê ñëåäóþùåìó âàðèàíòó. Åñëè æå çíà÷åíèÿ ñîâïàëè, òî âûïîëíÿåòñÿ êîä, ñîîòâåòñòâóþùèé ýòîìó âàðèàíòó. Ïðè ýòîì, åñëè íå óêàçàí îïåðàòîð break, òî âûïîëíÿþòñÿ êîäû è îñòàëüíûõ âàðèàíòîâ, ïîêà íå âñòðåòèòñÿ îïåðàòîð break. Ýòî æå ïðàâèëî äåéñòâóåò è äëÿ îñòàëüíûõ âàðèàíòîâ.
6.7. Îïåðàòîðû öèêëà
Îïåðàòîð öèêëà îáåñïå÷èâàåò ìíîãîêðàòíîå âûïîëíåíèå áëîêà ïðîãðàììíîãî êîäà äî òåõ ïîð, ïîêà íå âûïîëíèòñÿ íåêîòîðîå óñëîâèå.  JavaScript ïðåäóñìîòðåíû òðè îïåðàòîðà öèêëà: for, while è do-while. Âîîáùå ãîâîðÿ, ïðè ñîçäàíèè ïðîãðàìì âïîëíå ìîæíî îáîéòèñü îäíèì èç íèõ, for èëè while. Ìíå, íàïðèìåð, áîëüøå íðàâèòñÿ while. Îäíàêî âîçíèêàþò ñèòóàöèè, â êîòîðûõ îäèí èç îïåðàòîðîâ áîëåå óäîáåí èëè åñòåñòâåíåí, ÷åì äðóãîé.
Îïåðàòîð for
Îïåðàòîð for (äëÿ) òàêæå íàçûâàþò îïåðàòîðîì ñî ñ÷åò÷èêîì öèêëîâ, õîòÿ â íåì ñîâñåì íå îáÿçàòåëüíî èñïîëüçîâàòü ñ÷åò÷èê. Ñèíòàêñèñ ýòîãî îïåðàòîðà ñëåäóþùèé:
for ( [íà÷àëüíîå âûðàæåíèå] ; [óñëîâèå] ; [âûðàæåíèå îáíîâëåíèÿ] )
{
êîä
}
Çäåñü êâàäðàòíûå ñêîáêè ëèøü óêàçûâàþò íà òî, ÷òî çàêëþ÷åííûå â íèõ ïàðàìåòðû íå ÿâëÿþòñÿ îáÿçàòåëüíûìè.
Âñå, ÷òî íàõîäèòñÿ â êðóãëûõ ñêîáêàõ ñïðàâà îò êëþ÷åâîãî ñëîâà for, íàçûâàåòñÿ çàãîëîâêîì îïåðàòîðà öèêëà, à ñîäåðæèìîå ôèãóðíûõ ñêîáîê — åãî òåëîì.  çàãîëîâêå îïåðàòîðà öèêëà íà÷àëüíîå âûðàæåíèå âûïîëíÿåòñÿ òîëüêî îäèí ðàç â íà÷àëå âûïîëíåíèÿ îïåðàòîðà. Âòîðîé ïàðàìåòð ïðåäñòàâëÿåò ñîáîé óñëîâèå ïðîäîëæåíèÿ ðàáîòû îïåðàòîðà öèêëà. Îí àíàëîãè÷åí óñëîâèþ â îïåðàòîðå óñëîâíîãî ïåðåõîäà if. Òðåòèé ïàðàìåòð ñîäåðæèò âûðàæåíèå, êîòîðîå âûïîëíÿåòñÿ ïîñëå âûïîëíåíèÿ âñåõ âûðàæåíèé êîäà, çàêëþ÷åííîãî â ôèãóðíûå ñêîáêè. Îïåðàòîð öèêëà ðàáîòàåò ñëåäóþùèì îáðàçîì. Ñíà÷àëà âûïîëíÿåòñÿ íà÷àëüíîå âûðàæåíèå. Çàòåì ïðîâåðÿåòñÿ óñëîâèå. Åñëè îíî âûïîëíåíî, òî îïåðàòîð öèêëà ïðåêðàùàåò ðàáîòó (ïðè ýòîì êîä íå âûïîëíÿåòñÿ).  ïðîòèâíîì ñëó÷àå âûïîëíÿåòñÿ êîä, ðàñïîëîæåííûé â òåëå îïåðàòîðà for, òî åñòü ìåæäó ôèãóðíûìè ñêîáêàìè. Ïîñëå ýòîãî âûïîëíÿåòñÿ âûðàæåíèå îáíîâëåíèÿ (òðåòèé ïàðàìåòð îïåðàòîðà for). Òàê çàêàí÷èâàåòñÿ ïåðâûé öèêë èëè, êàê åùå ãîâîðÿò, ïåðâàÿ èòåðàöèÿ öèêëà. Äàëåå, ñíîâà ïðîâåðÿåòñÿ óñëîâèå è âñå ïîâòîðÿåòñÿ îïèñàííûì âûøå ñïîñîáîì.
Îïåðàòîð while
Îïåðàòîð öèêëà while (äî òåõ ïîð, ïîêà) èìååò ñòðóêòóðó, áîëåå ïðîñòóþ, ÷åì îïåðàòîð for, è ðàáîòàåò íåñêîëüêî èíà÷å. Ñèíòàêñèñ ýòîãî îïåðàòîðà ñëåäóþùèé:
while ( óñëîâèå )
{
êîä
}
Ïðè âûïîëíåíèè ýòîãî îïåðàòîðà ñíà÷àëà ïðîèçâîäèòñÿ ïðîâåðêà óñëîâèÿ, óêàçàííîãî â çàãîëîâêå, òî åñòü â êðóãëûõ ñêîáêàõ ñïðàâà îò êëþ÷åâîãî ñëîâà while. Åñëè îíî âûïîëíÿåòñÿ, òî âûïîëíÿåòñÿ êîä â òåëå îïåðàòîðà öèêëà, çàêëþ÷åííîãî â ôèãóðíûå ñêîáêè.  ïðîòèâíîì ñëó÷àå êîä íå âûïîëíÿåòñÿ. Ïðè âûïîëíåíèè êîäà (çàâåðøåíèè ïåðâîé èòåðàöèè) âû÷èñëèòåëüíûé ïðîöåññ âîçâðàùàåòñÿ ê çàãîëîâêó, ãäå ñíîâà ïðîâåðÿåòñÿ óñëîâèå, è ò. ä. Åñëè ñðàâíèâàòü îïåðàòîð while c îïåðàòîðîì for, òî îñîáåííîñòü ïåðâîãî çàêëþ÷àåòñÿ â òîì, ÷òî âûðàæåíèå îáíîâëåíèÿ çàïèñûâàåòñÿ â òåëå îïåðàòîðà, à íå â çàãîëîâêå. ×àñòî çàáûâàþò óêàçàòü ýòî âûðàæåíèå, è â ðåçóëüòàòå öèêë íå çàâåðøàåòñÿ (ïðîãðàììà «çàâèñàåò»).
Îïåðàòîð do-while
Îïåðàòîð do-while (äåëàé äî òåõ ïîð, ïîêà) ïðåäñòàâëÿåò ñîáîé êîíñòðóêöèþ èç äâóõ îïåðàòîðîâ, èñïîëüçóåìûõ ñîâìåñòíî. Ñèíòàêñèñ ýòîé êîíñòðóêöèè ñëåäóþùèé:
do {
êîä
}
while (óñëîâèå)
 îòëè÷èå îò îïåðàòîðà while â îïåðàòîðå do-while êîä âûïîëíÿåòñÿ õîòÿ áû îäèí ðàç, íåçàâèñèìî îò óñëîâèÿ. Óñëîâèå ïðîâåðÿåòñÿ ïîñëå âûïîëíåíèÿ êîäà. Åñëè îíî èñòèííî, òî ñíîâà âûïîëíÿåòñÿ êîä â òåëå îïåðàòîðà do.  ïðîòèâíîì ñëó÷àå ðàáîòà îïåðàòîðà do-while çàâåðøàåòñÿ.  îïåðàòîðå while óñëîâèå ïðîâåðÿåòñÿ â ïåðâóþ î÷åðåäü, äî âûïîëíåíèÿ êîäà â òåëå. Åñëè ïðè ïåðâîì îáðàùåíèè ê îïåðàòîðó while óñëîâèå íå âûïîëíÿåòñÿ, òî êîä íå áóäåò âûïîëíåí íèêîãäà.