ÐÑ ÑкÑлÑÐ½Ð¾Ñ Ð¿ÑогÑами ми знаÑмо багаÑо аÑиÑмеÑиÑниÑ
опеÑаÑÑй, ÑакиÑ
Ñк Ð´Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ +, Ð¼Ð½Ð¾Ð¶ÐµÐ½Ð½Ñ *, вÑднÑÐ¼Ð°Ð½Ð½Ñ - ÑоÑо.
У ÑÑÐ¾Ð¼Ñ ÑоздÑÐ»Ñ Ð¼Ð¸ поÑнемо з пÑоÑÑÐ¸Ñ Ð¾Ð¿ÐµÑаÑоÑÑв, поÑÑм зоÑеÑедимоÑÑ Ð½Ð° ÑпеÑиÑÑÑÐ½Ð¸Ñ Ð´Ð»Ñ JavaScript аÑпекÑÐ°Ñ , ÑÐºÑ Ð½Ðµ Ð¾Ñ Ð¾Ð¿Ð»ÐµÐ½Ñ ÑкÑлÑÐ½Ð¾Ñ Ð°ÑиÑмеÑикоÑ.
ТеÑмÑни: âÑнаÑнийâ, âбÑнаÑнийâ, âопеÑандâ
ÐеÑÑ Ð½Ñж ми поÑнемо, ÑозбеÑÑмо Ð¿ÐµÐ²Ð½Ñ Ð·Ð°Ð³Ð°Ð»ÑÐ½Ñ ÑеÑмÑнологÑÑ.
-
ÐпеÑанд â Ñе Ñе, до Ñого заÑÑоÑовÑÑÑÑÑÑ Ð¾Ð¿ÐµÑаÑоÑи. ÐапÑиклад, Ñ Ð¼Ð½Ð¾Ð¶ÐµÐ½Ð½Ñ
5 * 2Ñ Ð´Ð²Ð° опеÑанди: лÑвий опеÑанд5Ñ Ð¿Ñавий опеÑанд2. ÐÐ½Ð¾Ð´Ñ ÑÑ Ð½Ð°Ð·Ð¸Ð²Ð°ÑÑÑ âаÑгÑменÑамиâ, а не âопеÑандамиâ. -
ÐпеÑаÑÐ¾Ñ Ñ ÑнаÑним, ÑкÑо вÑн Ð¼Ð°Ñ Ð¾Ð´Ð¸Ð½ опеÑанд. ÐапÑиклад, ÑнаÑне запеÑеÑеннÑ
-змÑнÑÑ Ð·Ð½Ð°Ðº ÑиÑла:let x = 1; x = -x; alert( x ); // -1, бÑло заÑÑоÑоване ÑнаÑне запеÑеÑÐµÐ½Ð½Ñ -
ÐпеÑаÑÐ¾Ñ Ñ Ð±ÑнаÑним, ÑкÑо вÑн Ð¼Ð°Ñ Ð´Ð²Ð° опеÑанди. ÐапÑиклад, опеÑаÑÐ¾Ñ Ð¼ÑнÑÑ Ð¼Ð¾Ð¶Ð½Ð° викоÑиÑÑовÑваÑи Ñа Ñ Ð±ÑнаÑнÑй ÑоÑмÑ:
let x = 1, y = 3; alert( y - x ); // 2, бÑнаÑний мÑнÑÑ Ð²ÑднÑÐ¼Ð°Ñ Ð·Ð½Ð°ÑеннÑФоÑмалÑно, Ñ Ð¿ÑÐ¸ÐºÐ»Ð°Ð´Ð°Ñ Ð²Ð¸Ñе ми маÑмо два ÑÑÐ·Ð½Ñ Ð¾Ð¿ÐµÑаÑоÑи, ÑÐºÑ Ð¿Ð¾Ð·Ð½Ð°ÑаÑÑÑÑÑ Ð¾Ð´Ð½Ð°ÐºÐ¾Ð²Ð¸Ð¼ Ñимволом: опеÑаÑÐ¾Ñ Ð·Ð°Ð¿ÐµÑеÑÐµÐ½Ð½Ñ â ÑнаÑний опеÑаÑоÑ, Ñкий змÑнÑÑ Ð·Ð½Ð°Ðº ÑиÑла, Ñа опеÑаÑÐ¾Ñ Ð²ÑднÑÐ¼Ð°Ð½Ð½Ñ â бÑнаÑний опеÑаÑоÑ, Ñкий вÑднÑÐ¼Ð°Ñ Ð¾Ð´Ð½Ðµ ÑиÑло вÑд ÑнÑого.
ÐаÑемаÑика
JavaScript пÑдÑÑимÑÑ ÑÐ°ÐºÑ Ð¼Ð°ÑемаÑиÑÐ½Ñ Ð¾Ð¿ÐµÑаÑÑÑ:
- ÐодаваннÑ
+, - ÐÑднÑманнÑ
-, - ÐноженнÑ
*, - ÐÑленнÑ
/, - ÐÑÑаÑа вÑд дÑленнÑ
%, - ÐÑднеÑÐµÐ½Ð½Ñ Ð´Ð¾ ÑÑепенÑ
**.
ÐеÑÑÑ ÑоÑиÑи опеÑаÑÑÑ Ð·ÑозÑмÑлÑ, а Ð¾Ñ Ð¿Ñо % Ñа ** поÑÑÑбно ÑказаÑи декÑлÑка ÑлÑв.
ÐÑÑаÑа вÑд дÑÐ»ÐµÐ½Ð½Ñ %
ÐпеÑаÑÐ¾Ñ Ð¾ÑÑаÑÑ %, попÑи ÑвÑй зовнÑÑнÑй виглÑд, не повâÑзаний Ñз вÑдÑоÑками.
РезÑлÑÑаÑом a % b Ñ Ð¾ÑÑаÑа ÑÑлоÑиÑлового дÑÐ»ÐµÐ½Ð½Ñ a на b.
ÐапÑиклад:
alert( 5 % 2 ); // 1 - оÑÑаÑа вÑд дÑÐ»ÐµÐ½Ð½Ñ 5 на 2
alert( 8 % 3 ); // 2 - оÑÑаÑа вÑд дÑÐ»ÐµÐ½Ð½Ñ 8 на 3
alert( 8 % 4 ); // 0 - оÑÑаÑа вÑд дÑÐ»ÐµÐ½Ð½Ñ 8 на 4
ÐÑднеÑÐµÐ½Ð½Ñ Ð´Ð¾ ÑÑÐµÐ¿ÐµÐ½Ñ **
ÐпеÑаÑÐ¾Ñ Ð¿ÑднеÑÐµÐ½Ð½Ñ Ð´Ð¾ ÑÑÐµÐ¿ÐµÐ½Ñ a ** b множиÑÑ a Ñаме на Ñебе b ÑазÑв.
У ÑÐºÐ¾Ð»Ñ Ð¼Ð¸ запиÑÑÑмо Ñе Ñк ab.
ÐапÑиклад:
alert( 2 ** 2 ); // 2² = 4
alert( 2 ** 3 ); // 2³ = 8
alert( 2 ** 4 ); // 2â´ = 16
Так Ñамо Ñк Ñ Ð¼Ð°ÑемаÑиÑÑ, опеÑаÑÐ¾Ñ Ð¿ÑднеÑÐµÐ½Ð½Ñ Ñакож можна викоÑиÑÑовÑваÑи Ð´Ð»Ñ Ð´ÑÐ¾Ð±Ð¾Ð²Ð¸Ñ ÑиÑел.
ÐапÑиклад, квадÑаÑний коÑÑÐ½Ñ Ñе пÑднеÑÐµÐ½Ð½Ñ Ð´Ð¾ ÑÑÐµÐ¿ÐµÐ½Ñ Â½:
alert( 4 ** (1/2) ); // 2 (ÑÑепÑÐ½Ñ 1/2 â Ñе Ñеж Ñаме, Ñо квадÑаÑний коÑÑнÑ)
alert( 8 ** (1/3) ); // 2 (ÑÑепÑÐ½Ñ 1/3 â Ñе Ñеж Ñаме, Ñо кÑбÑÑний коÑÑнÑ)
ÐбâÑÐ´Ð½Ð°Ð½Ð½Ñ ÑÑдкÑв ÑеÑез бÑнаÑний +
РозглÑнемо оÑобливоÑÑÑ Ð¾Ð¿ÐµÑаÑоÑÑв JavaScript, ÑÐºÑ Ð²Ð¸Ñ Ð¾Ð´ÑÑÑ Ð·Ð° Ð¼ÐµÐ¶Ñ ÑкÑлÑÐ½Ð¾Ñ Ð°ÑиÑмеÑики.
ÐазвиÑай опеÑаÑÐ¾Ñ Ð¿Ð»ÑÑ + Ð´Ð¾Ð´Ð°Ñ ÑиÑла.
Ðле ÑкÑо бÑнаÑний + заÑÑоÑовÑÑÑÑÑÑ Ð´Ð¾ ÑÑдкÑв, вÑн обâÑднÑÑ ÑÑ
:
let s = 'мÑй_' + 'ÑÑдок';
alert(s); // мÑй_ÑÑдок
ÐвеÑнÑÑÑ ÑвагÑ, ÑкÑо бÑдÑ-Ñкий з опеÑандÑв Ñ ÑÑдком, ÑÐ¾Ð´Ñ ÑнÑий Ñакож пеÑеÑвоÑÑÑÑÑÑÑ Ð½Ð° ÑÑдок.
ÐапÑиклад:
alert( '1' + 2 ); // "12"
alert( 2 + '1' ); // "21"
ÐаÑиÑе, не Ð¼Ð°Ñ Ð·Ð½Ð°ÑеннÑ, Ñи пеÑÑий опеÑанд â ÑÑдок, Ñи дÑÑгий.
ÐÑÑ ÑкладнÑÑий пÑиклад:
alert(2 + 2 + '1' ); // "41", а не "221"
ТÑÑ Ð¾Ð¿ÐµÑаÑоÑи виконÑÑÑÑÑÑ Ð¾Ð´Ð¸Ð½ за одним. ÐеÑÑий + Ð´Ð¾Ð´Ð°Ñ Ð´Ð²Ð° ÑиÑла, ÑÐ¾Ð¼Ñ Ð²Ñн повеÑне 4; а наÑÑÑпний опеÑаÑÐ¾Ñ + вже додаÑÑÑ (обâÑднаÑ) попеÑеднÑй ÑезÑлÑÑÐ°Ñ Ñз ÑÑдком 1. У пÑдÑÑÐ¼ÐºÑ Ð¼Ð¸ оÑÑимаÑмо ÑÑдок '41' (4 + '1').
alert('1' + 2 + 2); // "122", а не "14"
У ÑÑÐ¾Ð¼Ñ Ð¿ÑÐ¸ÐºÐ»Ð°Ð´Ñ Ð¿ÐµÑÑий опеÑанд â ÑÑдок, ÑÐ¾Ð¼Ñ ÐºÐ¾Ð¼Ð¿ÑлÑÑÐ¾Ñ Ñакож опÑаÑÑовÑÑ ÑнÑÑ Ð´Ð²Ð° опеÑанди Ñк ÑÑдки. ÐпеÑанд 2 пÑиÑднÑÑÑÑÑÑ (конкаÑенÑÑÑÑÑÑ) до '1', ÑÐ¾Ð¼Ñ Ð² ÑезÑлÑÑаÑÑ Ð±Ñде '1' + 2 = "12", а поÑÑм â "12" + 2 = "122".
ÐиÑе бÑнаÑний + пÑаÑÑÑ Ð· ÑÑдками Ñак. ÐнÑÑ Ð°ÑиÑмеÑиÑÐ½Ñ Ð¾Ð¿ÐµÑаÑоÑи пÑаÑÑÑÑÑ ÑÑлÑки з ÑиÑлами й завжди пеÑеÑвоÑÑÑÑÑ ÑÐ²Ð¾Ñ Ð¾Ð¿ÐµÑанди на ÑиÑла.
ÐÑÑ Ð¿Ñиклад, Ñк пÑаÑÑÑ Ð²ÑднÑÐ¼Ð°Ð½Ð½Ñ Ð¹ дÑленнÑ:
alert( 6 - '2' ); // 4, '2' пеÑеÑвоÑÑÑÑÑÑÑ Ð½Ð° ÑиÑло
alert( '6' / '2' ); // 3, обидва опеÑанди пеÑеÑвоÑÑÑÑÑÑÑ Ð½Ð° ÑиÑла
ЧиÑлове пеÑеÑвоÑеннÑ, ÑнаÑний +
У опеÑаÑоÑа плÑÑ + Ñ Ð´Ð²Ñ ÑоÑми: бÑнаÑна, ÑÐºÑ Ð¼Ð¸ викоÑиÑÑовÑвали виÑе, Ñа ÑнаÑна.
УнаÑний плÑÑ Ð°Ð±Ð¾, ÑнÑими Ñловами, опеÑаÑÐ¾Ñ Ð¿Ð»ÑÑ +, заÑÑоÑований до одного опеÑанда, нÑÑого не зÑобиÑÑ, ÑкÑо опеÑанд Ñ ÑиÑлом. Ðле ÑкÑо опеÑанд не Ñ ÑиÑлом, ÑнаÑний плÑÑ Ð¿ÐµÑеÑвоÑиÑÑ Ð¹Ð¾Ð³Ð¾ на ÑиÑло.
ÐапÑиклад:
// Ðема нÑÑкого Ð²Ð¿Ð»Ð¸Ð²Ñ Ð½Ð° ÑиÑла
let x = 1;
alert( +x ); // 1
let y = -2;
alert( +y ); // -2
// ÐеÑеÑвоÑÑÑ Ð½ÐµÑиÑÐ»Ð¾Ð²Ñ Ð·Ð½Ð°ÑеннÑ
alert( +true ); // 1
alert( +"" ); // 0
ÐÑн наÑпÑÐ°Ð²Ð´Ñ Ð¿ÑаÑÑÑ Ñк Ñ Number(...), але Ð¼Ð°Ñ ÐºÐ¾ÑоÑÑий виглÑд.
ÐÐµÐ¾Ð±Ñ ÑднÑÑÑÑ Ð¿ÐµÑеÑвоÑÐµÐ½Ð½Ñ ÑÑдкÑв на ÑиÑла Ð²Ð¸Ð½Ð¸ÐºÐ°Ñ Ð´Ñже ÑаÑÑо. ÐапÑиклад, ÑкÑо ми оÑÑимÑÑмо знаÑÐµÐ½Ð½Ñ Ð· полÑв HTML ÑоÑми, вони зазвиÑай Ñ ÑÑдками. Що ÑобиÑи, ÑкÑо ми Ñ Ð¾Ñемо ÑÑ Ð¿ÑдÑÑмÑваÑи?
ÐÑнаÑний плÑÑ Ð´Ð¾Ð´Ð°Ð² би ÑÑ Ñк ÑÑдки:
let apples = "2";
let oranges = "3";
alert( apples + oranges ); // "23", бÑнаÑний плÑÑ Ð¾Ð±âÑднÑÑ ÑÑдки
ЯкÑо ми Ñ Ð¾Ñемо викоÑиÑÑовÑваÑи ÑÑ Ñк ÑиÑла, нам поÑÑÑбно конвеÑÑÑваÑи, а поÑÑм пÑдÑÑмÑваÑи ÑÑ :
let apples = "2";
let oranges = "3";
// обидва знаÑÐµÐ½Ð½Ñ Ð¿ÐµÑеÑвоÑÑÑÑÑÑÑ Ð½Ð° ÑиÑла пеÑед заÑÑоÑÑваннÑм бÑнаÑного плÑÑа
alert( +apples + +oranges ); // 5
// довÑий ваÑÑанÑ
// alert( Number(apples) + Number(oranges) ); // 5
РпоглÑÐ´Ñ Ð¼Ð°ÑемаÑика надмÑÑÐ½Ñ Ð¿Ð»ÑÑи можÑÑÑ Ð·Ð´Ð°ÑиÑÑ Ð´Ð¸Ð²Ð½Ð¸Ð¼Ð¸. Ðле з поглÑÐ´Ñ Ð¿ÑогÑамÑÑÑа ÑÑÑ Ð½ÐµÐ¼Ð°Ñ Ð½ÑÑого оÑобливого: ÑпоÑаÑÐºÑ Ð·Ð°ÑÑоÑовÑÑÑÑÑÑ ÑнаÑÐ½Ñ Ð¿Ð»ÑÑи, вони пеÑеÑвоÑÑÑÑÑ ÑÑдки на ÑиÑла, а поÑÑм бÑнаÑний плÑÑ Ð¿ÑдÑÑмовÑÑ ÑÑ .
Ð§Ð¾Ð¼Ñ ÑнаÑÐ½Ñ Ð¿Ð»ÑÑи заÑÑоÑовÑÑÑÑÑÑ Ð´Ð¾ знаÑÐµÐ½Ñ Ð¿ÐµÑед бÑнаÑними плÑÑами? Як ми побаÑимо далÑ, Ñе повâÑзано з ÑÑ Ð½Ñм виÑим пÑÑоÑиÑеÑом.
ÐÑÑоÑиÑÐµÑ Ð¾Ð¿ÐµÑаÑоÑа
ЯкÑо виÑаз Ð¼Ð°Ñ Ð±ÑлÑÑе одного опеÑаÑоÑа, поÑÑдок Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð²Ð¸Ð·Ð½Ð°ÑаÑÑÑÑÑ ÑÑ Ð½Ñм пÑÑоÑиÑеÑом, або, ÑнÑими Ñловами, Ñиповим поÑÑдком пеÑÑоÑÑÑ Ð¾Ð¿ÐµÑаÑоÑÑв.
ÐÑ Ñколи ми вÑÑ Ð·Ð½Ð°Ñмо, Ñо Ð¼Ð½Ð¾Ð¶ÐµÐ½Ð½Ñ Ñ Ð²Ð¸ÑÐ°Ð·Ñ 1 + 2 * 2 Ð¼Ð°Ñ Ð±ÑÑи обÑиÑлене пеÑед додаваннÑм. Саме Ñе Ñ Ñ Ð¿ÑÑоÑиÑеÑом. ÐажÑÑÑ, Ñо Ð¼Ð½Ð¾Ð¶ÐµÐ½Ð½Ñ Ð¼Ð°Ñ Ð²Ð¸Ñий пÑÑоÑиÑеÑ, нÑж додаваннÑ.
ÐÑжки пеÑевизнаÑаÑÑÑ Ð±ÑдÑ-Ñкий пÑÑоÑиÑеÑ, ÑомÑ, ÑкÑо ми не Ð·Ð°Ð´Ð¾Ð²Ð¾Ð»ÐµÐ½Ñ Ñиповим пÑÑоÑиÑеÑом, ми можемо викоÑиÑÑовÑваÑи дÑжки, Ñоби змÑниÑи його. ÐапÑиклад: (1 + 2) * 2.
У JavaScript Ñ Ð±Ð°Ð³Ð°Ñо опеÑаÑоÑÑв. Ðожен опеÑаÑÐ¾Ñ Ð¼Ð°Ñ Ð²ÑдповÑдний Ð½Ð¾Ð¼ÐµÑ Ð¿ÑÑоÑиÑеÑÑ. ÐеÑÑим виконÑÑÑÑÑÑ Ñой опеÑаÑоÑ, Ñкий Ð¼Ð°Ñ Ð½Ð°Ð¹Ð±ÑлÑÑий Ð½Ð¾Ð¼ÐµÑ Ð¿ÑÑоÑиÑеÑÑ. ЯкÑо пÑÑоÑиÑÐµÑ Ñ Ð¾Ð´Ð½Ð°ÐºÐ¾Ð²Ð¸Ð¼, поÑÑдок Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ â злÑва напÑаво.
ÐÑÑ Ð²Ð¸ÑÑг Ñз ÑаблиÑÑ Ð¿ÑÑоÑиÑеÑÑв (вам не поÑÑÑбно ÑÑ Ð·Ð°Ð¿Ð°Ð¼âÑÑовÑваÑи, але звеÑнÑÑÑ ÑвагÑ, Ñо ÑнаÑÐ½Ñ Ð¾Ð¿ÐµÑаÑоÑи маÑÑÑ Ð²Ð¸Ñий пÑÑоÑиÑÐµÑ Ð·Ð° вÑдповÑÐ´Ð½Ñ Ð±ÑнаÑнÑ):
| ÐÑÑоÑиÑÐµÑ | ÐмâÑ | Ðнак |
|---|---|---|
| ⦠| ⦠| ⦠|
| 14 | ÑнаÑний плÑÑ | + |
| 14 | ÑнаÑний мÑнÑÑ | - |
| 13 | пÑднеÑÐµÐ½Ð½Ñ Ð´Ð¾ ÑÑÐµÐ¿ÐµÐ½Ñ | ** |
| 12 | Ð¼Ð½Ð¾Ð¶ÐµÐ½Ð½Ñ | * |
| 12 | дÑÐ»ÐµÐ½Ð½Ñ | / |
| 11 | Ð´Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ | + |
| 11 | вÑднÑÐ¼Ð°Ð½Ð½Ñ | - |
| ⦠| ⦠| ⦠|
| 2 | пÑиÑвоÑÐ½Ð½Ñ | = |
| ⦠| ⦠| ⦠|
Як ми баÑимо, âÑнаÑний плÑÑâ Ð¼Ð°Ñ Ð¿ÑÑоÑиÑÐµÑ 14, Ñо виÑе за 11 â пÑÑоÑиÑÐµÑ âдодаваннÑâ (бÑнаÑний плÑÑ). Саме ÑомÑ, Ñ Ð²Ð¸ÑÐ°Ð·Ñ "+apples + +oranges", ÑнаÑÐ½Ñ Ð¿Ð»ÑÑи виконÑÑÑÑÑÑ Ð¿ÐµÑед додаваннÑм (бÑнаÑним плÑÑом).
ÐÑиÑвоÑннÑ
ÐазнаÑимо, Ñо пÑиÑвоÑÐ½Ð½Ñ = Ñакож Ñ Ð¾Ð¿ÐµÑаÑоÑом. Ðоно Ñ Ñ ÑаблиÑÑ Ð· пÑÑоÑиÑеÑами й Ð¼Ð°Ñ Ð´Ñже низÑкий пÑÑоÑиÑÐµÑ 2.
ТомÑ, коли ми пÑиÑвоÑÑмо знаÑÐµÐ½Ð½Ñ Ð·Ð¼ÑннÑй, напÑиклад, x = 2 * 2 + 1, ÑпоÑаÑÐºÑ Ð²Ð¸ÐºÐ¾Ð½ÑÑÑÑÑÑ Ð¾Ð±ÑиÑленнÑ, а поÑÑм виконÑÑÑÑÑÑ Ð¿ÑиÑвоÑÐ½Ð½Ñ = Ð·Ñ Ð·Ð±ÐµÑеженнÑм ÑезÑлÑÑаÑÑ Ð² x.
let x = 2 * 2 + 1;
alert( x ); // 5
ÐÑиÑвоÑÐ½Ð½Ñ = повеÑÑÐ°Ñ ÑезÑлÑÑаÑ
Той ÑакÑ, Ñо = Ñ Ð¾Ð¿ÐµÑаÑоÑом, а не âмагÑÑноÑâ конÑÑÑÑкÑÑÑÑ Ð¼Ð¾Ð²Ð¸, Ð¼Ð°Ñ ÑÑкаве знаÑеннÑ.
УÑÑ Ð¾Ð¿ÐµÑаÑоÑи в JavaScript повеÑÑаÑÑÑ Ð·Ð½Ð°ÑеннÑ. Це оÑевидно Ð´Ð»Ñ + Ñа -, але Ñе Ñакож пÑавдиво Ð´Ð»Ñ =.
Ðиклик x = знаÑÐµÐ½Ð½Ñ Ð·Ð°Ð¿Ð¸ÑÑÑ Ð·Ð½Ð°ÑÐµÐ½Ð½Ñ Ñ x, а поÑÑм повеÑÑÐ°Ñ Ð¹Ð¾Ð³Ð¾.
ÐÑÑ Ð´ÐµÐ¼Ð¾Ð½ÑÑÑаÑÑÑ, Ñка викоÑиÑÑовÑÑ Ð¿ÑиÑвоÑÐ½Ð½Ñ Ñк ÑаÑÑÐ¸Ð½Ñ ÑкладнÑÑого виÑазÑ:
let a = 1;
let b = 2;
let c = 3 - (a = b + 1);
alert( a ); // 3
alert( c ); // 0
У Ð½Ð°Ð²ÐµÐ´ÐµÐ½Ð¾Ð¼Ñ Ð²Ð¸Ñе пÑÐ¸ÐºÐ»Ð°Ð´Ñ ÑезÑлÑÑÐ°Ñ Ð²Ð¸ÑÐ°Ð·Ñ (a = b + 1) Ñ Ð·Ð½Ð°ÑеннÑм, Ñке пÑиÑвоÑвалоÑÑ Ð·Ð¼ÑннÑй a (ÑобÑо 3). ÐоÑÑм воно викоÑиÑÑовÑÑÑÑÑÑ Ð´Ð»Ñ Ð¿Ð¾Ð´Ð°Ð»ÑÑиÑ
обÑиÑленÑ.
ЧÑдеÑнаÑÑкий код, Ñи не Ñак? Ðи маÑмо ÑозÑмÑÑи, Ñк Ñе пÑаÑÑÑ, бо ÑÐ½Ð¾Ð´Ñ Ð¼Ð¸ баÑимо подÑбне в бÑблÑоÑÐµÐºÐ°Ñ JavaScript.
Ðднак, бÑÐ´Ñ Ð»Ð°Ñка, не пиÑÑÑÑ ÑвÑй код Ñак. Ð¦Ñ ÑÑÑки, безÑмовно, не ÑоблÑÑÑ ÐºÐ¾Ð´ бÑлÑÑ Ð·ÑозÑмÑлим або ÑиÑабелÑним.
ÐанÑÑÐ³Ð¾Ð²Ñ Ð¿ÑиÑвоÑннÑ
ÐнÑÐ¾Ñ ÑÑÐºÐ°Ð²Ð¾Ñ Ð¾ÑобливÑÑÑÑ Ñ Ð·Ð´Ð°ÑнÑÑÑÑ Ð»Ð°Ð½ÑÑгового пÑиÑвоÑннÑ:
let a, b, c;
a = b = c = 2 + 2;
alert( a ); // 4
alert( b ); // 4
alert( c ); // 4
ÐанÑÑгове пÑиÑвоÑÐ½Ð½Ñ Ð²Ð¸ÐºÐ¾Ð½ÑÑÑÑÑÑ ÑпÑава налÑво. СпоÑаÑÐºÑ Ð¾Ð±ÑиÑлÑÑÑÑÑÑ Ð½Ð°Ð¹Ð¿ÑавÑÑий виÑаз 2 + 2, а поÑÑм ÑезÑлÑÑÐ°Ñ Ð¿ÑиÑвоÑÑÑÑÑÑ Ð·Ð¼Ñнним лÑвоÑÑÑ: c, b Ñа a. ÐÑеÑÑÐ¾Ñ Ð²ÑÑ Ð·Ð¼ÑÐ½Ð½Ñ Ð¼Ð°ÑÑÑ ÑпÑлÑне знаÑеннÑ.
ÐÐ½Ð¾Ð²Ñ Ñаки, Ñоби покÑаÑиÑи ÑиÑабелÑнÑÑÑÑ ÐºÐ¾Ð´Ñ, кÑаÑе ÑоздÑлÑÑи подÑÐ±Ð½Ñ ÐºÐ¾Ð½ÑÑÑÑкÑÑÑ Ð½Ð° декÑлÑка ÑÑдкÑв:
c = 2 + 2;
b = c;
a = c;
Так легÑе пÑоÑиÑаÑи, оÑобливо коли Ñвидко пеÑеглÑдаÑи код.
ÐпеÑаÑÐ¾Ñ âмодиÑÑкÑваÑи Ñа пÑиÑвоÑÑиâ
ЧаÑÑо нам поÑÑÑбно заÑÑоÑÑваÑи опеÑаÑÐ¾Ñ Ð´Ð¾ змÑÐ½Ð½Ð¾Ñ Ð¹ збеÑегÑи новий ÑезÑлÑÑÐ°Ñ Ñ ÑÑ Ð¶ ÑÐ°Ð¼Ñ Ð·Ð¼ÑннÑ.
ÐапÑиклад:
let n = 2;
n = n + 5;
n = n * 2;
Цей Ð·Ð°Ð¿Ð¸Ñ Ð¼Ð¾Ð¶Ð½Ð° ÑкоÑоÑиÑи за Ð´Ð¾Ð¿Ð¾Ð¼Ð¾Ð³Ð¾Ñ Ð¾Ð¿ÐµÑаÑоÑÑв += Ñа *=:
let n = 2;
n += 5; // ÑÐµÐ¿ÐµÑ n = 7 (Ñе ж Ñаме, Ñо n = n + 5)
n *= 2; // ÑÐµÐ¿ÐµÑ n = 14 (Ñе ж Ñаме, Ñо n = n * 2)
alert( n ); // 14
ÐоÑоÑÐºÑ Ð¾Ð¿ÐµÑаÑоÑи âмодиÑÑкÑваÑи Ñа пÑиÑвоÑÑиâ Ñ Ð´Ð»Ñ Ð²ÑÑÑ
аÑиÑмеÑиÑниÑ
Ñа побÑÑовиÑ
опеÑаÑоÑÑв: /=, -= ÑоÑо.
Ð¦Ñ Ð¾Ð¿ÐµÑаÑоÑи маÑÑÑ Ñакий же пÑÑоÑиÑеÑ, Ñк Ñ Ð·Ð²Ð¸Ñайне пÑиÑвоÑннÑ, ÑÐ¾Ð¼Ñ Ð²Ð¾Ð½Ð¸ виконÑÑÑÑÑÑ Ð¿ÑÑÐ»Ñ Ð±ÑлÑÑоÑÑÑ ÑнÑÐ¸Ñ Ð¾Ð±ÑиÑленÑ:
let n = 2;
n *= 3 + 5; // пÑава ÑаÑÑина обÑиÑлÑÑÑÑÑÑ Ð¿ÐµÑÑоÑ, Ñак Ñамо Ñк Ñ n *= 8
alert( n ); // 16
ÐнкÑеменÑ/декÑеменÑ
ÐбÑлÑÑÐµÐ½Ð½Ñ Ð°Ð±Ð¾ зменÑÐµÐ½Ð½Ñ Ð½Ð° одиниÑÑ Ñ Ð¾Ð´Ð½ÑÑÑ Ð· найпоÑиÑенÑÑÐ¸Ñ ÑиÑÐ»Ð¾Ð²Ð¸Ñ Ð¾Ð¿ÐµÑаÑÑй.
Ð¢Ð¾Ð¼Ñ Ð´Ð»Ñ ÑÑого Ñ ÑпеÑÑалÑÐ½Ñ Ð¾Ð¿ÐµÑаÑоÑи:
-
ÐнкÑеменÑ
++збÑлÑÑÑÑ Ð·Ð¼ÑÐ½Ð½Ñ Ð½Ð° 1:let counter = 2; counter++; // пÑаÑÑÑ Ñак Ñамо, Ñк counter = counter + 1, але Ð·Ð°Ð¿Ð¸Ñ ÐºÐ¾ÑоÑÑе alert( counter ); // 3 -
ÐекÑеменÑ
--зменÑÑÑ Ð·Ð¼ÑÐ½Ð½Ñ Ð½Ð° 1:let counter = 2; counter--; // пÑаÑÑÑ Ñак Ñамо, Ñк counter = counter - 1, але Ð·Ð°Ð¿Ð¸Ñ ÐºÐ¾ÑоÑÑе alert( counter ); // 1
ÐнкÑеменÑ/декÑÐµÐ¼ÐµÐ½Ñ Ð¼Ð¾Ð¶ÑÑÑ Ð·Ð°ÑÑоÑовÑваÑиÑÑ Ð»Ð¸Ñе до змÑнниÑ
. СпÑоба викоÑиÑÑаÑи ÑÑ
Ñз знаÑеннÑм, Ñк Ð¾Ñ 5++, пÑизведе до помилки.
ÐпеÑаÑоÑи ++ Ñа -- можÑÑÑ ÑозÑаÑовÑваÑиÑÑ Ð´Ð¾ або пÑÑÐ»Ñ Ð·Ð¼ÑнноÑ.
- Ðоли опеÑаÑÐ¾Ñ Ð¹Ð´Ðµ за змÑнноÑ, вÑн Ñ âпоÑÑÑÑкÑнÑй ÑоÑмÑâ:
counter++. - âÐÑеÑÑкÑна ÑоÑмаâ â Ñе коли опеÑаÑÐ¾Ñ Ð¹Ð´Ðµ попеÑÐµÐ´Ñ Ð·Ð¼ÑнноÑ:
++counter.
ÐÐ±Ð¸Ð´Ð²Ñ ÑÑ ÑнÑÑÑÑкÑÑÑ ÑоблÑÑÑ Ñе ж Ñаме: збÑлÑÑÑÑÑÑ counter на 1.
Чи Ñ ÑÑзниÑÑ? Так, але ми можемо побаÑиÑи ÑÑ ÑÑлÑки викоÑиÑÑавÑи знаÑеннÑ, Ñке повеÑÑаÑÑÑ ++/--.
РозбеÑÑмоÑÑ. Як нам вÑдомо, вÑÑ Ð¾Ð¿ÐµÑаÑоÑи повеÑÑаÑÑÑ Ð·Ð½Ð°ÑеннÑ. ÐнкÑеменÑ/декÑÐµÐ¼ÐµÐ½Ñ Ð½Ðµ Ñ Ð²Ð¸Ð½ÑÑком. ÐÑеÑÑкÑна ÑоÑма повеÑÑÐ°Ñ Ð½Ð¾Ð²Ðµ знаÑеннÑ, ÑÐ¾Ð´Ñ Ñк поÑÑÑÑкÑна ÑоÑма повеÑÑÐ°Ñ ÑÑаÑе знаÑÐµÐ½Ð½Ñ (до збÑлÑÑеннÑ/зменÑеннÑ).
Щоби побаÑиÑи ÑÑзниÑÑ, наведемо пÑиклад:
let counter = 1;
let a = ++counter; // (*)
alert(a); // 2
У ÑÑÐ´ÐºÑ (*), пÑеÑÑкÑна ÑоÑма ++counter збÑлÑÑÑÑ counter Ñа повеÑÑÐ°Ñ Ð½Ð¾Ð²Ðµ знаÑеннÑ, 2. ÐÑже, alert показÑÑ 2.
Ð¢ÐµÐ¿ÐµÑ ÑкоÑиÑÑаÑмоÑÑ Ð¿Ð¾ÑÑÑÑкÑÐ½Ð¾Ñ ÑоÑмоÑ:
let counter = 1;
let a = counter++; // (*) змÑнили ++counter на counter++
alert(a); // 1
У ÑÑÐ´ÐºÑ (*), поÑÑÑÑкÑна ÑоÑма counter++ Ñакож збÑлÑÑÑÑ counter, але повеÑÑÐ°Ñ ÑÑаÑе знаÑÐµÐ½Ð½Ñ (до ÑнкÑеменÑÑ). ÐÑже, alert показÑÑ 1.
ÐÑдÑÑмки:
-
ЯкÑо ÑезÑлÑÑÐ°Ñ Ð·Ð±ÑлÑÑеннÑ/зменÑÐµÐ½Ð½Ñ Ð½Ðµ викоÑиÑÑовÑÑÑÑÑÑ, Ð½ÐµÐ¼Ð°Ñ Ð½ÑÑÐºÐ¾Ñ ÑÑзниÑÑ, ÑÐºÑ ÑоÑÐ¼Ñ Ð²Ð¸ÐºÐ¾ÑиÑÑовÑваÑи:
let counter = 0; counter++; ++counter; alert( counter ); // 2, Ñ ÑÑÐ´ÐºÐ°Ñ Ð²Ð¸Ñе ÑобиÑÑÑÑ Ð¾Ð´Ð½Ðµ Ñ Ñе ж Ñаме -
ЯкÑо ми Ñ Ð¾Ñемо збÑлÑÑиÑи знаÑÐµÐ½Ð½Ñ Ñа негайно викоÑиÑÑаÑи ÑезÑлÑÑÐ°Ñ Ð¾Ð¿ÐµÑаÑоÑа, нам поÑÑÑбна пÑеÑÑкÑна ÑоÑма:
let counter = 0; alert( ++counter ); // 1 -
ЯкÑо ми Ñ Ð¾Ñемо збÑлÑÑиÑи знаÑеннÑ, але викоÑиÑÑаÑи його попеÑÐµÐ´Ð½Ñ Ð·Ð½Ð°ÑеннÑ, нам поÑÑÑбна поÑÑÑÑкÑна ÑоÑма:
let counter = 0; alert( counter++ ); // 0
ÐпеÑаÑоÑи ++/-- Ñакож можÑÑÑ Ð²Ð¸ÐºÐ¾ÑиÑÑовÑваÑиÑÑ Ð²ÑеÑÐµÐ´Ð¸Ð½Ñ Ð²Ð¸ÑазÑв. ÐÑ
нÑй пÑÑоÑиÑÐµÑ Ð²Ð¸Ñий за бÑлÑÑÑÑÑÑ ÑнÑиÑ
аÑиÑмеÑиÑниÑ
опеÑаÑÑй.
ÐапÑиклад:
let counter = 1;
alert( 2 * ++counter ); // 4
ÐоÑÑвнÑйÑе з:
let counter = 1;
alert( 2 * counter++ ); // 2, ÑÐ¾Ð¼Ñ Ñо counter++ повеÑÑÐ°Ñ "ÑÑаÑе" знаÑеннÑ
ХоÑа з ÑÐµÑ Ð½ÑÑного поглÑÐ´Ñ Ñе допÑÑÑимо, Ñакий Ð·Ð°Ð¿Ð¸Ñ ÑобиÑÑ ÐºÐ¾Ð´ Ð¼ÐµÐ½Ñ ÑиÑабелÑним. Ðоли один ÑÑдок ÑобиÑÑ ÐºÑлÑка ÑеÑей â Ñе не добÑе.
ÐÑд ÑÐ°Ñ ÑиÑÐ°Ð½Ð½Ñ ÐºÐ¾Ð´Ñ Ñвидке âвеÑÑикалÑнеâ ÑканÑÐ²Ð°Ð½Ð½Ñ Ð¾ÐºÐ¾Ð¼ може легко пÑопÑÑÑиÑи ÑоÑÑ Ð¿Ð¾Ð´Ñбне до counter++, Ñ Ð½Ðµ бÑде оÑевидним, Ñо змÑнна бÑла збÑлÑÑена.
Ðи ÑекомендÑÑмо ÑÑÐ¸Ð»Ñ âодна лÑнÑÑ â одна дÑÑâ:
let counter = 1;
alert( 2 * counter );
counter++;
ÐобÑÑÐ¾Ð²Ñ Ð¾Ð¿ÐµÑаÑоÑи
ÐобÑÑÐ¾Ð²Ñ Ð¾Ð¿ÐµÑаÑоÑи ÑозглÑдаÑÑÑ Ð°ÑгÑменÑи Ñк 32-бÑÑÐ½Ñ ÑÑÐ»Ñ ÑиÑла Ñа пÑаÑÑÑÑÑ Ð½Ð° ÑÑÐ²Ð½Ñ ÑÑ Ð½Ñого двÑйкового пÑедÑÑавленнÑ.
Ð¦Ñ Ð¾Ð¿ÐµÑаÑоÑи не Ñ ÑпеÑиÑÑÑними Ð´Ð»Ñ JavaScript. Ðони пÑдÑÑимÑÑÑÑÑÑ Ñ Ð±ÑлÑÑоÑÑÑ Ð¼Ð¾Ð² пÑогÑамÑваннÑ.
СпиÑок опеÑаÑоÑÑв:
- AND(Ñ) (
&) - OR(або) (
|) - XOR(побÑÑове виклÑÑне або) (
^) - NOT(нÑ) (
~) - LEFT SHIFT(зÑÑв лÑвоÑÑÑ) (
<<) - RIGHT SHIFT(зÑÑв пÑавоÑÑÑ) (
>>) - ZERO-FILL RIGHT SHIFT(зÑÑв пÑавоÑÑÑ Ñз заповненнÑм нÑлÑми) (
>>>)
Ð¦Ñ Ð¾Ð¿ÐµÑаÑоÑи викоÑиÑÑовÑÑÑÑÑÑ ÑодÑ, коли нам поÑÑÑбно âвозиÑиÑÑâ з ÑиÑлами на дÑже низÑÐºÐ¾Ð¼Ñ (побÑÑовомÑ) ÑÑÐ²Ð½Ñ (ÑобÑо â вкÑай ÑÑдко). ÐайближÑим ÑаÑом ÑÐ°ÐºÑ Ð¾Ð¿ÐµÑаÑоÑи нам не знадоблÑÑÑÑÑ, оÑкÑлÑки Ñ Ð²ÐµÐ±ÑозÑобÑÑ Ð²Ð¾Ð½Ð¸ майже не викоÑиÑÑовÑÑÑÑÑÑ. ÐÑоÑе в ÑÐ°ÐºÐ¸Ñ Ð³Ð°Ð»ÑзÑÑ , Ñк кÑипÑогÑаÑÑÑ, вони можÑÑÑ Ð±ÑÑи дÑже коÑиÑними. Ðи можеÑе пÑоÑиÑаÑи ÑоздÑл Bitwise Operators на MDN, ÑкÑо виникне поÑÑеба.
Ðома
ÐпеÑаÑÐ¾Ñ âкомаâ (,) незвиÑайний Ñ Ð·Ð°ÑÑоÑовÑÑÑÑÑÑ Ð´Ñже ÑÑдко. ÐÐ½Ð¾Ð´Ñ Ñей опеÑаÑÐ¾Ñ Ð²Ð¸ÐºÐ¾ÑиÑÑовÑÑÑÑ Ð´Ð»Ñ Ð½Ð°Ð¿Ð¸ÑÐ°Ð½Ð½Ñ ÐºÐ¾ÑоÑÑого кодÑ, ÑÐ¾Ð¼Ñ Ð½Ð°Ð¼ поÑÑÑбно знаÑи його, Ñоби ÑозÑмÑÑи, Ñо вÑдбÑваÑÑÑÑÑ.
ÐпеÑаÑÐ¾Ñ ÐºÐ¾Ð¼Ð° Ð´Ð°Ñ Ð·Ð¼Ð¾Ð³Ñ Ð¾Ð±ÑиÑлиÑи кÑлÑка виÑазÑв, ÑоздÑливÑи ÑÑ
ÐºÐ¾Ð¼Ð¾Ñ ,. Ðожен Ñз ниÑ
обÑиÑлÑÑÑÑÑÑ, але повеÑÑаÑÑÑÑÑ ÑÑлÑки ÑезÑлÑÑÐ°Ñ Ð¾ÑÑаннÑого.
ÐапÑиклад:
let a = (1 + 2, 3 + 4);
alert( a ); // 7 (ÑезÑлÑÑÐ°Ñ Ð¾Ð±ÑиÑÐ»ÐµÐ½Ð½Ñ 3 + 4)
ТÑÑ Ð¾Ð±ÑиÑлÑÑÑÑÑÑ Ð¿ÐµÑÑий виÑаз 1 + 2 Ñ Ð¹Ð¾Ð³Ð¾ ÑезÑлÑÑÐ°Ñ Ð²Ð¸ÐºÐ¸Ð´Ð°ÑÑÑÑÑ. ÐоÑÑм обÑиÑлÑÑÑÑÑÑ 3 + 4 Ñ Ð¿Ð¾Ð²ÐµÑÑаÑÑÑÑÑ Ñк ÑезÑлÑÑаÑ.
ÐвеÑнÑÑÑ ÑвагÑ, Ñо опеÑаÑÐ¾Ñ âкомаâ Ð¼Ð°Ñ Ð´Ñже низÑкий пÑÑоÑиÑеÑ, нижÑий за =, ÑÐ¾Ð¼Ñ Ð´Ñжки Ñ Ð²Ð°Ð¶Ð»Ð¸Ð²Ð¸Ð¼Ð¸ в Ð½Ð°Ð²ÐµÐ´ÐµÐ½Ð¾Ð¼Ñ Ð²Ð¸Ñе пÑикладÑ.
Ðез дÑжок, Ñ Ð²Ð¸ÑÐ°Ð·Ñ a = 1 + 2, 3 + 4 ÑпоÑаÑÐºÑ Ð¾Ð±ÑиÑлÑÑÑÑÑÑ Ð¾Ð¿ÐµÑаÑоÑи +, пÑдÑÑмовÑÑÑи ÑиÑла Ñ a = 3, 7; поÑÑм опеÑаÑÐ¾Ñ Ð¿ÑиÑвоÑÐ½Ð½Ñ = пÑиÑвоÑÑ a = 3, а ÑеÑÑа (ÑиÑло 7 пÑÑÐ»Ñ ÐºÐ¾Ð¼Ð¸) ÑгноÑÑÑÑÑÑÑ. Це Ñк запиÑаÑи виÑаз (a = 1 + 2), 3 + 4.
Ð§Ð¾Ð¼Ñ Ð½Ð°Ð¼ поÑÑÑбен опеÑаÑоÑ, Ñо Ð²Ð¸ÐºÐ¸Ð´Ð°Ñ Ð²Ñе, окÑÑм оÑÑаннÑого виÑазÑ?
ÐÐ½Ð¾Ð´Ñ Ð¹Ð¾Ð³Ð¾ викоÑиÑÑовÑÑÑÑ Ñ ÑкладнÑÑÐ¸Ñ ÐºÐ¾Ð½ÑÑÑÑкÑÑÑÑ , Ñоби помÑÑÑиÑи кÑлÑка дÑй в один ÑÑдок.
ÐапÑиклад:
// ÑÑи опеÑаÑÑÑ Ð² Ð¾Ð´Ð½Ð¾Ð¼Ñ ÑÑдкÑ
for (a = 1, b = 3, c = a * b; a < 10; a++) {
...
}
Ð¢Ð°ÐºÑ ÑÑÑки викоÑиÑÑовÑÑÑÑÑÑ Ð² багаÑÑÐ¾Ñ ÑÑеймвоÑÐºÐ°Ñ JavaScript. Саме ÑÐ¾Ð¼Ñ Ð¼Ð¸ ÑÑ Ð·Ð³Ð°Ð´ÑÑмо. Ðле зазвиÑай вони не покÑаÑÑÑÑÑ ÑиÑабелÑнÑÑÑÑ ÐºÐ¾Ð´Ñ, ÑÐ¾Ð¼Ñ Ð¼Ð¸ маÑмо добÑе подÑмаÑи пеÑед ÑÑ Ð²Ð¸ÐºÐ¾ÑиÑÑаннÑм.
ÐоменÑаÑÑ
<code>, Ð´Ð»Ñ ÐºÑлÑÐºÐ¾Ñ ÑÑдкÑв â обгоÑнÑÑÑ ÑÑ Ñегом<pre>, Ð´Ð»Ñ Ð¿Ð¾Ð½Ð°Ð´ 10 ÑÑдкÑв â викоÑиÑÑовÑйÑе пÑÑоÑниÑÑ (plnkr, jsbin, codepenâ¦)