ÐÑа глава опиÑÑÐ²Ð°ÐµÑ Ð²ÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð¸ опеÑаÑоÑÑ ÑзÑка JavaScript, Ñакие как опеÑаÑоÑÑ Ð¿ÑиÑваиваниÑ, ÑÑавнениÑ, аÑиÑмеÑиÑеÑкие, биÑовÑе, логиÑеÑкие, ÑÑÑоÑнÑе, и ÑазлиÑнÑе ÑпеÑиалÑнÑе опеÑаÑоÑÑ.
ÐолнÑй и деÑалÑнÑй ÑпиÑок опеÑаÑоÑов и вÑÑажений Ñакже доÑÑÑпен в ÑÑом ÑÑководÑÑве.
ÐпеÑаÑоÑÑÐ JavaScript еÑÑÑ ÑледÑÑÑие ÑÐ¸Ð¿Ñ Ð¾Ð¿ÐµÑаÑоÑов. ÐаннÑй подÑаздел опиÑÑÐ²Ð°ÐµÑ ÐºÐ°Ð¶Ð´Ñй Ñип и ÑодеÑÐ¶Ð¸Ñ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾Ð± Ð¸Ñ Ð¿ÑиоÑиÑеÑÐ°Ñ Ð´ÑÑг над дÑÑгом.
JavaScript поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ Ð±Ð¸Ð½Ð°ÑнÑе и ÑнаÑнÑе опеÑаÑоÑÑ, а Ñакже еÑÑ Ð¾Ð´Ð¸Ð½ ÑпеÑиалÑнÑй ÑеÑнаÑнÑй опеÑаÑÐ¾Ñ - ÑÑловнÑй опеÑаÑоÑ. ÐинаÑÐ½Ð°Ñ Ð¾Ð¿ÐµÑаÑÐ¸Ñ Ð¸ÑполÑзÑÐµÑ Ð´Ð²Ð° опеÑанда, один пеÑед опеÑаÑоÑом и дÑÑгой за ним:
operand1 operator operand2
ÐапÑимеÑ: 3+4
или x*y
.
Ð ÑÐ²Ð¾Ñ Ð¾ÑеÑÐµÐ´Ñ ÑнаÑÐ½Ð°Ñ Ð¾Ð¿ÐµÑаÑÐ¸Ñ Ð¸ÑполÑзÑÐµÑ Ð¾Ð´Ð¸Ð½ опеÑанд, пеÑед или поÑле опеÑаÑоÑа:
operator operand
или
operand operator
ÐапÑимеÑ: x++
или ++x
.
Ð ÑезÑлÑÑаÑе опеÑаÑии пÑиÑÐ²Ð°Ð¸Ð²Ð°Ð½Ð¸Ñ Ð¾Ð¿ÐµÑÐ°Ð½Ð´Ñ Ñлева Ð¾Ñ Ð¾Ð¿ÐµÑаÑоÑа пÑиÑÐ²Ð°Ð¸Ð²Ð°Ð½Ð¸Ñ (знак "=") ÑÑÑанавливаеÑÑÑ Ð·Ð½Ð°Ñение , коÑоÑое беÑÑÑÑÑ Ð¸Ð· пÑавого опеÑанда. ÐÑновнÑм опеÑаÑоÑом пÑиÑÐ²Ð°Ð¸Ð²Ð°Ð½Ð¸Ñ ÑвлÑеÑÑÑ =, он пÑиÑÐ²Ð°Ð¸Ð²Ð°ÐµÑ Ð·Ð½Ð°Ñение пÑавого опеÑанда опеÑандÑ, Ð½Ð°Ñ Ð¾Ð´ÑÑемÑÑÑ Ñлева. Таким обÑазом, вÑÑажение x = y ознаÑаеÑ, ÑÑо x пÑиÑваиваеÑÑÑ Ð·Ð½Ð°Ñение y.
СÑÑеÑÑвÑÑÑ Ñакже ÑоÑÑавнÑе опеÑаÑоÑÑ Ð¿ÑиÑваиваниÑ, коÑоÑÑе иÑполÑзÑÑÑÑÑ Ð´Ð»Ñ ÑокÑаÑÑнного пÑедÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¾Ð¿ÐµÑаÑий, опиÑаннÑÑ Ð² ÑледÑÑÑей ÑаблиÑе:
ÐеÑÑÑÑкÑÑÑизаÑиÑÐÐ»Ñ Ð±Ð¾Ð»ÐµÐµ Ñложного пÑиÑÐ²Ð°Ð¸Ð²Ð°Ð½Ð¸Ñ Ð² JavaScript еÑÑÑ ÑинÑакÑÐ¸Ñ Ð´ÐµÑÑÑÑкÑÑÑизаÑии - ÑÑо вÑÑажение, коÑоÑое позволÑÐµÑ Ð¸Ð·Ð²Ð»ÐµÐºÐ°ÑÑ Ð´Ð°Ð½Ð½Ñе из маÑÑивов или обÑекÑов, иÑполÑзÑÑ ÑинÑакÑиÑ, коÑоÑÑй зеÑкалиÑÑÐµÑ ÐºÐ¾Ð½ÑÑÑÑкÑоÑÑ Ð¼Ð°ÑÑивов и лиÑеÑÐ°Ð»Ñ Ð¾Ð±ÑекÑов.
var foo = ["one", "two", "three"];
// без деÑÑÑÑкÑÑÑизаÑии
var one = foo[0];
var two = foo[1];
var three = foo[2];
// Ñ Ð´ÐµÑÑÑÑкÑÑÑизаÑией
var [one, two, three] = foo;
ÐпеÑаÑоÑÑ ÑÑавнениÑ
ÐпеÑаÑÐ¾Ñ ÑÑÐ°Ð²Ð½ÐµÐ½Ð¸Ñ ÑÑÐ°Ð²Ð½Ð¸Ð²Ð°ÐµÑ Ñвои опеÑÐ°Ð½Ð´Ñ Ð¸ возвÑаÑÐ°ÐµÑ Ð»Ð¾Ð³Ð¸ÑеÑкое знаÑение, базиÑÑÑÑÑ Ð½Ð° иÑÑинноÑÑи ÑÑавнениÑ. ÐпеÑÐ°Ð½Ð´Ñ Ð¼Ð¾Ð³ÑÑ Ð±ÑÑÑ ÑиÑлами, ÑÑÑоками, логиÑеÑкими велиÑинами или обÑекÑами. СÑÑоки ÑÑавниваÑÑÑÑ Ð½Ð° оÑновании ÑÑандаÑÑного лекÑикогÑаÑиÑеÑкого поÑÑдка, иÑполÑзÑÑ Unicode-знаÑениÑ. РболÑÑинÑÑве ÑлÑÑаев, еÑли опеÑÐ°Ð½Ð´Ñ Ð¸Ð¼ÐµÑÑ ÑазнÑй Ñип, Ñо JavaScript пÑобÑÐµÑ Ð¿ÑеобÑазоваÑÑ Ð¸Ñ
в Ñип, подÑ
одÑÑий Ð´Ð»Ñ ÑÑавнениÑ. Такое поведение обÑÑно пÑоиÑÑ
Ð¾Ð´Ð¸Ñ Ð¿Ñи ÑÑавнении ÑиÑловÑÑ
опеÑандов. ÐдинÑÑвеннÑм иÑклÑÑением из данного пÑавила ÑвлÑеÑÑÑ ÑÑавнение Ñ Ð¸ÑполÑзованием опеÑаÑоÑов ===
и !==
, коÑоÑÑе пÑоизводÑÑ ÑÑÑогое ÑÑавнение на ÑавенÑÑво или неÑавенÑÑво. ÐÑи опеÑаÑоÑÑ Ð½Ðµ пÑÑаÑÑÑÑ Ð¿ÑеобÑазоваÑÑ Ð¾Ð¿ÐµÑÐ°Ð½Ð´Ñ Ð¿ÐµÑед иÑ
ÑÑавнением. СледÑÑÑÐ°Ñ ÑаблиÑа опиÑÑÐ²Ð°ÐµÑ Ð¾Ð¿ÐµÑаÑоÑÑ ÑÑÐ°Ð²Ð½ÐµÐ½Ð¸Ñ Ð² конÑекÑÑе ÑледÑÑÑего пÑимеÑа кода:
==
) ÐозвÑаÑÐ°ÐµÑ true, еÑли опеÑÐ°Ð½Ð´Ñ ÑавнÑ. 3 == var1
"3" == var1
3 == '3'
Ðе Ñавно (!=
) ÐозвÑаÑÐ°ÐµÑ true, еÑли опеÑÐ°Ð½Ð´Ñ Ð½Ðµ ÑавнÑ. var1 != 4 var2 != "3"
СÑÑого Ñавно (===
) ÐозвÑаÑÐ°ÐµÑ true, еÑли опеÑÐ°Ð½Ð´Ñ ÑÐ°Ð²Ð½Ñ Ð¸ имеÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñй Ñип. СмоÑÑиÑе Ñакже Object.is
и sameness in JS. 3 === var1
СÑÑого не Ñавно(!==
) ÐозвÑаÑÐ°ÐµÑ true, еÑли опеÑÐ°Ð½Ð´Ñ Ð½Ðµ ÑÐ°Ð²Ð½Ñ Ð¸/или имеÑÑ ÑазнÑй Ñип. var1 !== "3" 3 !== '3'
ÐолÑÑе (>
) ÐозвÑаÑÐ°ÐµÑ true, еÑли опеÑанд Ñлева болÑÑе опеÑанда ÑпÑава. var2 > var1 "12" > 2
ÐолÑÑе или Ñавно (>=
) ÐозвÑаÑÐ°ÐµÑ true, еÑли опеÑанд Ñлева болÑÑе или Ñавен опеÑÐ°Ð½Ð´Ñ ÑпÑава. var2 >= var1 var1 >= 3
ÐенÑÑе (<
) ÐозвÑаÑÐ°ÐµÑ true, еÑли опеÑанд Ñлева менÑÑе опеÑанда ÑпÑава. var1 < var2 "2" < 12
ÐенÑÑе или Ñавно (<=
) ÐозвÑаÑÐ°ÐµÑ true, еÑли опеÑанд Ñлева менÑÑе или Ñавен опеÑÐ°Ð½Ð´Ñ ÑпÑава. var1 <= var2 var2 <= 5
ÐÑимеÑание: (=>) не опеÑаÑоÑ, а ноÑаÑÐ¸Ñ Ð¡ÑÑелоÑнÑÑ ÑÑнкÑий.
ÐÑиÑмеÑиÑеÑкие опеÑаÑоÑÑÐÑиÑмеÑиÑеÑкие опеÑаÑоÑÑ Ð¸ÑполÑзÑÑÑ Ð² каÑеÑÑве ÑвоиÑ
опеÑандов ÑиÑла (Ñакже лиÑеÑÐ°Ð»Ñ Ð¸Ð»Ð¸ пеÑеменнÑе) и в каÑеÑÑве ÑезÑлÑÑаÑа возвÑаÑаÑÑ Ð¾Ð´Ð½Ð¾ ÑиÑловое знаÑение. СÑандаÑÑнÑми аÑиÑмеÑиÑеÑкими опеÑаÑоÑами ÑвлÑÑÑÑÑ Ñложение (+), вÑÑиÑание (-), Ñмножение (*), и деление (/). ÐÑи ÑабоÑе Ñ ÑиÑлами Ñ Ð¿Ð»Ð°Ð²Ð°ÑÑей ÑоÑкой ÑÑи опеÑаÑоÑÑ ÑабоÑаÑÑ Ð°Ð½Ð°Ð»Ð¾Ð³Ð¸Ñно иÑ
ÑабоÑе в болÑÑинÑÑве дÑÑгиÑ
ÑзÑкаÑ
пÑогÑаммиÑÐ¾Ð²Ð°Ð½Ð¸Ñ (обÑаÑиÑе внимание, ÑÑо деление на Ð½Ð¾Ð»Ñ Ð²Ð¾Ð·Ð²ÑаÑÐ°ÐµÑ Ð±ÐµÑконеÑноÑÑÑ Infinity
). ÐапÑимеÑ:
console.log(1 / 2); /* возвÑаÑÐ°ÐµÑ 0.5 */
console.log(1 / 2 == 1.0 / 2.0); /* возвÑаÑÐ°ÐµÑ true */
ÐÑоме Ñого, JavaScript позволÑÐµÑ Ð¸ÑполÑзоваÑÑ ÑледÑÑÑие аÑиÑмеÑиÑеÑкие опеÑаÑоÑÑ, пÑедÑÑавленнÑе в ÑаблиÑе:
ÐпеÑаÑÐ¾Ñ ÐпиÑание ÐÑÐ¸Ð¼ÐµÑ ÐÑÑаÑок Ð¾Ñ Ð´ÐµÐ»ÐµÐ½Ð¸Ñ (%
) ÐинаÑнÑй опеÑаÑоÑ. ÐозвÑаÑÐ°ÐµÑ ÑелоÑиÑленнÑй оÑÑаÑок Ð¾Ñ Ð´ÐµÐ»ÐµÐ½Ð¸Ñ Ð´Ð²ÑÑ
опеÑандов. 12 % 5 веÑнÑÑ 2. ÐнкÑÐµÐ¼ÐµÐ½Ñ (++
) УнаÑнÑй опеÑаÑоÑ. ÐобавлÑÐµÑ ÐµÐ´Ð¸Ð½Ð¸ÑÑ Ðº ÑÐ²Ð¾ÐµÐ¼Ñ Ð¾Ð¿ÐµÑандÑ. ÐÑли иÑполÑзÑеÑÑÑ Ð² каÑеÑÑве пÑеÑикÑа (++x
), Ñо возвÑаÑÐ°ÐµÑ Ð·Ð½Ð°Ñение опеÑанда Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð½Ð¾Ð¹ к Ð½ÐµÐ¼Ñ ÐµÐ´Ð¸Ð½Ð¸Ñей; а в ÑлÑÑае пÑÐ¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² каÑеÑÑве оконÑÐ°Ð½Ð¸Ñ (x++
) возвÑаÑÐ°ÐµÑ Ð·Ð½Ð°Ñение опеÑанда пеÑед добавлением к Ð½ÐµÐ¼Ñ ÐµÐ´Ð¸Ð½Ð¸ÑÑ. ÐÑли x
Ñавно 3, Ñогда ++x
ÑÑÑÐ°Ð½Ð¾Ð²Ð¸Ñ Ð·Ð½Ð°Ñение x
ÑавнÑм 4 и веÑнÑÑ 4, напÑоÑив x++
веÑнÑÑ 3 и поÑом ÑÑÑÐ°Ð½Ð¾Ð²Ð¸Ñ Ð·Ð½Ð°Ñение x
ÑавнÑм 4. ÐекÑÐµÐ¼ÐµÐ½Ñ (--
) УнаÑнÑй опеÑаÑоÑ. ÐÑÑиÑÐ°ÐµÑ ÐµÐ´Ð¸Ð½Ð¸ÑÑ Ð¸Ð· знаÑÐµÐ½Ð¸Ñ Ñвоего опеÑанда. Ðогика данного опеÑаÑоÑа аналогиÑна опеÑаÑоÑÑ Ð¸Ð½ÐºÑеменÑа. ÐÑли x
Ñавно 3, Ñогда --x
ÑÑÑÐ°Ð½Ð¾Ð²Ð¸Ñ Ð·Ð½Ð°Ñение x
ÑавнÑм 2 и веÑнÑÑ 2, напÑоÑив x--
веÑнÑÑ 3 и поÑом ÑÑÑÐ°Ð½Ð¾Ð²Ð¸Ñ Ð·Ð½Ð°Ñение x
ÑавнÑм 2. УнаÑнÑй минÑÑ-
УнаÑнÑй опеÑаÑоÑ. ÐозвÑаÑÐ°ÐµÑ Ð¾ÑÑиÑаÑелÑное знаÑение Ñвоего опеÑанда. ÐÑли x
Ñавно 3, Ñогда -x
веÑнÑÑ -3. УнаÑнÑй плÑÑ (+
) УнаÑнÑй опеÑаÑоÑ. ÐÑÑаеÑÑÑ ÐºÐ¾Ð½Ð²ÐµÑÑиÑоваÑÑ Ð¾Ð¿ÐµÑанд в ÑиÑло, еÑли он еÑÑ Ð½Ðµ оно. +"3"
веÑнÑÑ 3
. +true
веÑнÑÑ 1.
Ðозведение в ÑÑÐµÐ¿ÐµÐ½Ñ (**
) ÐкÑпеÑименÑалÑÐ½Ð°Ñ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ ÐÐ¾Ð·Ð²Ð¾Ð´Ð¸Ñ Ð¾Ñнование
в показаÑÐµÐ»Ñ ÑÑепени
, как, оÑнованиеÑÑепенÑ
2 ** 3
веÑнÑÑ 8
. 10 ** -1
веÑнÑÑ 0.1
. ÐиÑовÑе (поÑазÑÑднÑе) опеÑаÑоÑÑ
ÐиÑовÑе опеÑаÑоÑÑ Ð¾Ð±ÑабаÑÑваÑÑ Ñвои опеÑÐ°Ð½Ð´Ñ ÐºÐ°Ðº поÑледоваÑелÑноÑÑи из 32 Ð±Ð¸Ñ (нÑлей и единиÑ), а не как деÑÑÑиÑнÑе, ÑеÑÑнадÑаÑеÑиÑнÑе или воÑÑмеÑиÑнÑе ÑиÑла. ÐапÑимеÑ, деÑÑÑиÑное ÑиÑло 9 Ð¸Ð¼ÐµÐµÑ Ð´Ð²Ð¾Ð¸Ñное пÑедÑÑавление 1001. ÐиÑовÑе опеÑаÑоÑÑ Ð²ÑполнÑÑÑ Ð¾Ð¿ÐµÑаÑии над Ñаким двоиÑнÑм пÑедÑÑавлением, но ÑезÑлÑÑÐ°Ñ Ð²Ð¾Ð·Ð²ÑаÑаÑÑ ÐºÐ°Ðº обÑÑное ÑиÑловое знаÑение JavaScript.
СледÑÑÑÐ°Ñ ÑаблиÑа обобÑÐ°ÐµÑ Ð±Ð¸ÑовÑе опеÑаÑоÑÑ JavaScript.
ÐпеÑаÑÐ¾Ñ ÐÑполÑзование ÐпиÑание ÐобиÑовое Ða & b
ÐозвÑаÑÐ°ÐµÑ ÐµÐ´Ð¸Ð½Ð¸ÑÑ Ð² каждой биÑовой позиÑии, Ð´Ð»Ñ ÐºÐ¾ÑоÑой ÑооÑвеÑÑÑвÑÑÑие биÑÑ Ð¾Ð±ÐµÐ¸Ñ
опеÑандов ÑвлÑÑÑÑÑ ÐµÐ´Ð¸Ð½Ð¸Ñами. ÐобиÑовое ÐÐÐ a | b
ÐозвÑаÑÐ°ÐµÑ ÐµÐ´Ð¸Ð½Ð¸ÑÑ Ð² каждой биÑовой позиÑии, Ð´Ð»Ñ ÐºÐ¾ÑоÑой один из ÑооÑвеÑÑÑвÑÑÑиÑ
биÑов или оба биÑа опеÑандов ÑвлÑÑÑÑÑ ÐµÐ´Ð¸Ð½Ð¸Ñами. ÐÑклÑÑаÑÑее ÐÐÐ a ^ b
ÐозвÑаÑÐ°ÐµÑ ÐµÐ´Ð¸Ð½Ð¸ÑÑ Ð² каждой биÑовой позиÑии, Ð´Ð»Ñ ÐºÐ¾ÑоÑой ÑолÑко один из ÑооÑвеÑÑÑвÑÑÑиÑ
биÑов опеÑандов ÑвлÑеÑÑÑ ÐµÐ´Ð¸Ð½Ð¸Ñей. ÐобиÑовое ÐÐ ~ a
ÐаменÑÐµÑ Ð±Ð¸ÑÑ Ð¾Ð¿ÐµÑанда на пÑоÑивоположнÑе. Сдвиг влево a << b
Ð¡Ð´Ð²Ð¸Ð³Ð°ÐµÑ a
в двоиÑном пÑедÑÑавлении на b
Ð±Ð¸Ñ Ð²Ð»ÐµÐ²Ð¾, добавлÑÑ ÑпÑава нÑли. Сдвиг впÑаво Ñ Ð¿ÐµÑеноÑом знака a >> b
Ð¡Ð´Ð²Ð¸Ð³Ð°ÐµÑ a
в двоиÑном пÑедÑÑавлении на b
Ð±Ð¸Ñ Ð²Ð¿Ñаво, оÑбÑаÑÑÐ²Ð°Ñ ÑдвигаемÑе биÑÑ. Сдвиг впÑаво Ñ Ð·Ð°Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸ÐµÐ¼ нÑлÑми a >>> b
Ð¡Ð´Ð²Ð¸Ð³Ð°ÐµÑ a
в двоиÑном пÑедÑÑавлении на b
Ð±Ð¸Ñ Ð²Ð¿Ñаво, оÑбÑаÑÑÐ²Ð°Ñ ÑдвигаемÑе биÑÑ Ð¸ добавлÑÑ Ñлева нÑли. ÐиÑовÑе логиÑеÑкие опеÑаÑоÑÑ
ÐÑновной ÑмÑÑл ÑабоÑÑ Ð±Ð¸ÑовÑÑ Ð»Ð¾Ð³Ð¸ÑеÑÐºÐ¸Ñ Ð¾Ð¿ÐµÑаÑоÑов ÑоÑÑÐ¾Ð¸Ñ Ð² ÑледÑÑÑем:
ÐпеÑÐ°Ð½Ð´Ñ Ð¿ÑеобÑазÑÑÑÑÑ Ð² 32-биÑнÑе ÑелÑе ÑиÑла и пÑедÑÑавлÑÑÑÑÑ Ð² виде поÑледоваÑелÑноÑÑи Ð±Ð¸Ñ (нÑлей и единиÑ). ЧиÑла, имеÑÑие более 32 биÑов бÑдÑÑ ÑокÑаÑенÑ. ÐапÑимеÑ, ÑледÑÑÑее ÑиÑло Ð¸Ð¼ÐµÐµÑ Ð±Ð¾Ð»ÑÑе 32 биÑов и ÑконвеÑÑиÑÑеÑÑÑ Ð² 32-Ñ Ð±Ð¸Ñное:
Ðо : 11100110111110100000000000000110000000000001 ÐоÑле : 10100000000000000110000000000001
ÐаждÑй Ð±Ð¸Ñ Ð¿ÐµÑвого опеÑанда ÑвÑзÑваеÑÑÑ Ñ ÑооÑвеÑÑÑвÑÑÑим биÑом вÑоÑого опеÑанда: пеÑвÑй Ð±Ð¸Ñ Ñ Ð¿ÐµÑвÑм биÑом, вÑоÑой Ð±Ð¸Ñ - Ñо вÑоÑÑм, и Ñак далее.
Ркаждой паÑе Ð±Ð¸Ñ Ð¿ÑименÑеÑÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ñй опеÑаÑоÑ, и побиÑово ÑоÑмиÑÑеÑÑÑ Ð¸ÑоговÑй ÑезÑлÑÑаÑ.
ÐапÑимеÑ, двоиÑнÑм пÑедÑÑавлением ÑиÑла 9 ÑвлÑеÑÑÑ 1001, а двоиÑнÑм пÑедÑÑавлением пÑÑнадÑаÑи - 1111. РезÑлÑÑаÑÑ Ð¿ÑÐ¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ðº ÑÑим ÑиÑлам биÑовÑÑ Ð»Ð¾Ð³Ð¸ÑеÑÐºÐ¸Ñ Ð¾Ð¿ÐµÑаÑоÑов вÑглÑдÑÑ ÑледÑÑÑим обÑазом:
ÐÑÑажение РезÑлÑÑÐ°Ñ ÐвоиÑное опиÑание15 & 9
9
1111 & 1001 = 1001
15 | 9
15
1111 | 1001 = 1111
15 ^ 9
6
1111 ^ 1001 = 0110
~15
-16
~``00000000...``00001111 = ``1111``1111``...``11110000
~9
-10
~``00000000``...``0000``1001 = ``1111``1111``...``1111``0110
ÐбÑаÑиÑе внимание, ÑÑо вÑе 32 биÑа пÑеобÑазÑÑÑÑÑ Ñ Ð¸ÑполÑзованием биÑового опеÑаÑоÑа ÐÐ, и ÑÑо велиÑÐ¸Ð½Ñ Ñ Ð½Ð°Ð¸Ð±Ð¾Ð»ÐµÐµ знаÑимÑм (ÑамÑм левÑм) биÑом ÑавнÑм 1 пÑедÑÑавлÑÑÑ Ñобой оÑÑиÑаÑелÑнÑе ÑиÑла (в пÑедÑÑавлении Ð´Ð¾Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð´Ð¾ двÑÑ ).
ÐиÑовÑе опеÑаÑоÑÑ ÑдвигаÐиÑовÑе опеÑаÑоÑÑ Ñдвига иÑполÑзÑÑÑ Ð´Ð²Ð° опеÑанда: пеÑвÑй пÑедÑÑавлÑÐµÑ Ð²ÐµÐ»Ð¸ÑинÑ, подлежаÑÑÑ ÑдвигÑ, а вÑоÑой опеÑанд ÑказÑÐ²Ð°ÐµÑ ÑиÑло биÑовÑÑ Ð¿Ð¾Ð·Ð¸Ñий на коÑоÑое должен бÑÑÑ ÑдвинÑÑ Ð¿ÐµÑвÑй опеÑанд. ÐапÑавление опеÑаÑии Ñдвига опÑеделÑеÑÑÑ Ð¸ÑполÑзÑемÑм опеÑаÑоÑом.
ÐпеÑаÑоÑÑ Ñдвига пÑеобÑазÑÑÑ Ñвои опеÑÐ°Ð½Ð´Ñ Ð² 32-биÑнÑе ÑелÑе ÑиÑла и возвÑаÑаÑÑ ÑезÑлÑÑÐ°Ñ Ñого же Ñипа, каким ÑвлÑеÑÑÑ Ð»ÐµÐ²Ñй опеÑанд.
ÐпеÑаÑоÑÑ Ñдвига пеÑеÑиÑÐ»ÐµÐ½Ñ Ð² ÑледÑÑÑей ÑаблиÑе.
ÐпеÑаÑÐ¾Ñ ÐпиÑание ÐÑÐ¸Ð¼ÐµÑ Ð¡Ð´Ð²Ð¸Ð³ влево (<<
) ÐаннÑй опеÑаÑÐ¾Ñ ÑÐ´Ð²Ð¸Ð³Ð°ÐµÑ Ð¿ÐµÑвÑй опеÑанд на Ñказанное колиÑеÑÑво Ð±Ð¸Ñ Ð²Ð»ÐµÐ²Ð¾. ÐзлиÑние биÑÑ, ÑдвинÑÑÑе влево, оÑбÑаÑÑваÑÑÑÑ. СпÑава ÑиÑло дополнÑеÑÑÑ Ð½ÑлевÑми биÑами. 9<<2
Ñавно 36, Ñак как 1001 поÑле Ñдвига на 2 биÑа влево пÑевÑаÑаеÑÑÑ Ð² 100100, ÑÑо ÑооÑвеÑÑÑвÑÐµÑ ÑиÑÐ»Ñ 36. Сдвиг впÑаво Ñ Ð¿ÐµÑеноÑом знака (>>
) ÐаннÑй опеÑаÑÐ¾Ñ ÑÐ´Ð²Ð¸Ð³Ð°ÐµÑ Ð¿ÐµÑвÑй опеÑанд на Ñказанное колиÑеÑÑво Ð±Ð¸Ñ Ð²Ð¿Ñаво. ÐзлиÑние биÑÑ, ÑдвинÑÑÑе впÑаво, оÑбÑаÑÑваÑÑÑÑ. Слева ÑиÑло дополнÑеÑÑÑ ÐºÐ¾Ð¿Ð¸Ñми кÑайнего Ñлева биÑа. 9>>2
Ñавно 2, Ñак как 1001 поÑле Ñдвига на 2 биÑа впÑаво пÑевÑаÑаеÑÑÑ Ð² 10, ÑÑо ÑооÑвеÑÑÑвÑÐµÑ ÑиÑÐ»Ñ 2. ÐодобнÑм же обÑазом -9>>2
Ñавно -3, Ñак как знак ÑоÑ
ÑанÑеÑÑÑ. Сдвиг впÑаво Ñ Ð·Ð°Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸ÐµÐ¼ нÑлÑми (>>>
) ÐаннÑй опеÑаÑÐ¾Ñ ÑÐ´Ð²Ð¸Ð³Ð°ÐµÑ Ð¿ÐµÑвÑй опеÑанд на Ñказанное колиÑеÑÑво Ð±Ð¸Ñ Ð²Ð¿Ñаво. ÐзлиÑние биÑÑ, ÑдвинÑÑÑе впÑаво, оÑбÑаÑÑваÑÑÑÑ. Слева ÑиÑло дополнÑеÑÑÑ Ð½ÑлевÑми биÑами. 19>>>2
Ñавно 4, Ñак как 10011 поÑле Ñдвига на 2 биÑа впÑаво пÑевÑаÑаеÑÑÑ Ð² 100, ÑÑо ÑооÑвеÑÑÑвÑÐµÑ ÑиÑÐ»Ñ 4. ÐÐ»Ñ Ð½ÐµÐ¾ÑÑиÑаÑелÑнÑÑ
ÑиÑел Ñдвиг впÑаво Ñ Ð·Ð°Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸ÐµÐ¼ нÑлÑми и Ñдвиг впÑаво Ñ Ð¿ÐµÑеноÑом знака даÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñй ÑезÑлÑÑаÑ. ÐогиÑеÑкие опеÑаÑоÑÑ
ÐогиÑеÑкие опеÑаÑоÑÑ Ð¾Ð±ÑÑно иÑполÑзÑÑÑÑÑ Ñ Ð±ÑлевÑми (логиÑеÑкими) знаÑениÑми; пÑи ÑÑом возвÑаÑаемое ими знаÑение Ñакже ÑвлÑеÑÑÑ Ð±ÑлевÑм. Ðднако опеÑаÑоÑÑ && и || ÑакÑиÑеÑки возвÑаÑаÑÑ Ð·Ð½Ð°Ñение одного из опеÑандов, поÑÑомÑ, еÑли ÑÑи опеÑаÑоÑÑ Ð¸ÑполÑзÑÑÑÑÑ Ñ Ð½ÐµÐ±ÑлевÑми велиÑинами, Ñо возвÑаÑÐ°ÐµÐ¼Ð°Ñ Ð¸Ð¼Ð¸ велиÑина Ñакже Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð½Ðµ бÑлевой. ÐогиÑеÑкие опеÑаÑоÑÑ Ð¾Ð¿Ð¸ÑÐ°Ð½Ñ Ð² ÑледÑÑÑей ÑаблиÑе.
ÐпеÑаÑÐ¾Ñ ÐÑполÑзование ÐпиÑание ÐогиÑеÑкое Ð(&&
) expr1 && expr2
(ÐогиÑеÑкое Ð) ÐозвÑаÑÐ°ÐµÑ Ð¾Ð¿ÐµÑанд expr1
, еÑли он Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿ÑеобÑазован в false
; в пÑоÑивном ÑлÑÑае возвÑаÑÐ°ÐµÑ Ð¾Ð¿ÐµÑанд expr2
. Таким обÑазом, пÑи иÑполÑзовании бÑлевÑÑ
велиÑин в каÑеÑÑве опеÑандов, опеÑаÑÐ¾Ñ &&
возвÑаÑÐ°ÐµÑ true
, еÑли оба опеÑанда true
; в пÑоÑивном ÑлÑÑае возвÑаÑÐ°ÐµÑ false
. ÐогиÑеÑкое ÐÐÐ(||
) expr1 || expr2
(ÐогиÑеÑкое ÐÐÐ) ÐозвÑаÑÐ°ÐµÑ Ð¾Ð¿ÐµÑанд expr1
, еÑли он Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿ÑеобÑазован в true
; в пÑоÑивном ÑлÑÑае возвÑаÑÐ°ÐµÑ Ð¾Ð¿ÐµÑанд expr2
. Таким обÑазом, пÑи иÑполÑзовании бÑлевÑÑ
велиÑин в каÑеÑÑве опеÑандов, опеÑаÑÐ¾Ñ ||
возвÑаÑÐ°ÐµÑ true
, еÑли один из опеÑандов true
; еÑли же оба false
, Ñо возвÑаÑÐ°ÐµÑ false
. ÐогиÑеÑкое ÐÐ (!
) !expr
(ÐогиÑеÑкое ÐÐ) ÐозвÑаÑÐ°ÐµÑ false
, еÑли опеÑанд Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿ÑеобÑазован в true
; в пÑоÑивном ÑлÑÑае возвÑаÑÐ°ÐµÑ true
.
ÐÑимеÑами вÑÑажений, коÑоÑÑе могÑÑ Ð±ÑÑÑ Ð¿ÑеобÑÐ°Ð·Ð¾Ð²Ð°Ð½Ñ Ð² false ÑвлÑÑÑÑÑ: null, 0, NaN, пÑÑÑÐ°Ñ ÑÑÑока ("") или undefined.
СледÑÑÑий код демонÑÑÑиÑÑÐµÑ Ð¿ÑимеÑÑ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¾Ð¿ÐµÑаÑоÑа && (логиÑеÑкое Ð).
var a1 = true && true; // t && t возвÑаÑÐ°ÐµÑ true
var a2 = true && false; // t && f возвÑаÑÐ°ÐµÑ false
var a3 = false && true; // f && t возвÑаÑÐ°ÐµÑ false
var a4 = false && 3 == 4; // f && f возвÑаÑÐ°ÐµÑ false
var a5 = "Cat" && "Dog"; // t && t возвÑаÑÐ°ÐµÑ Dog
var a6 = false && "Cat"; // f && t возвÑаÑÐ°ÐµÑ false
var a7 = "Cat" && false; // t && f возвÑаÑÐ°ÐµÑ false
СледÑÑÑий код демонÑÑÑиÑÑÐµÑ Ð¿ÑимеÑÑ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¾Ð¿ÐµÑаÑоÑа || (логиÑеÑкое ÐÐÐ).
var o1 = true || true; // t || t возвÑаÑÐ°ÐµÑ true
var o2 = false || true; // f || t возвÑаÑÐ°ÐµÑ true
var o3 = true || false; // t || f возвÑаÑÐ°ÐµÑ true
var o4 = false || 3 == 4; // f || f возвÑаÑÐ°ÐµÑ false
var o5 = "Cat" || "Dog"; // t || t возвÑаÑÐ°ÐµÑ Cat
var o6 = false || "Cat"; // f || t возвÑаÑÐ°ÐµÑ Cat
var o7 = "Cat" || false; // t || f возвÑаÑÐ°ÐµÑ Cat
СледÑÑÑий код демонÑÑÑиÑÑÐµÑ Ð¿ÑимеÑÑ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¾Ð¿ÐµÑаÑоÑа ! (логиÑеÑкое ÐÐ).
var n1 = !true; // !t возвÑаÑÐ°ÐµÑ false
var n2 = !false; // !f возвÑаÑÐ°ÐµÑ true
var n3 = !"Cat"; // !t возвÑаÑÐ°ÐµÑ false
СокÑаÑÑÐ½Ð½Ð°Ñ Ð¾Ñенка
Так как логиÑеÑкие вÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð²ÑÑиÑлÑÑÑÑÑ Ñлева напÑаво, они пÑовеÑÑÑÑÑÑ Ð½Ð° возможноÑÑÑ Ð²ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÑокÑаÑÑнной оÑенки Ñ Ð¸ÑполÑзованием ÑледÑÑÑÐ¸Ñ Ð¿Ñавил:
false
&& anything - ÑокÑаÑение Ñ ÑезÑлÑÑаÑом false.true
|| anything - ÑокÑаÑение Ñ ÑезÑлÑÑаÑом true.ÐÑавила логики гаÑанÑиÑÑÑÑ, ÑÑо даннÑе вÑÑиÑÐ»ÐµÐ½Ð¸Ñ Ð²Ñегда коÑÑекÑнÑ. ÐбÑаÑиÑе внимание, ÑÑо ÑаÑÑÑ "anything" пÑедÑÑавленнÑÑ Ð²ÑÑе вÑÑажений не вÑÑиÑлÑеÑÑÑ, Ñаким обÑазом ÑдаÑÑÑÑ Ð¸Ð·Ð±ÐµÐ¶Ð°ÑÑ Ð»ÑбÑÑ Ð¿Ð¾Ð±Ð¾ÑнÑÑ ÑÑÑекÑов вÑÑиÑÐ»ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½Ð¾Ð¹ ÑаÑÑи.
СÑÑоковÑе опеÑаÑоÑÑРдополнение к опеÑаÑоÑам ÑÑавнениÑ, коÑоÑÑе могÑÑ Ð¸ÑполÑзоваÑÑÑÑ Ñо ÑÑÑоковÑми знаÑениÑми, опеÑаÑÐ¾Ñ (+) позволÑÐµÑ Ð¾Ð±ÑединиÑÑ Ð´Ð²Ðµ ÑÑÑоки, возвÑаÑÐ°Ñ Ð¿Ñи ÑÑом ÑÑеÑÑÑ ÑÑÑокÑ, коÑоÑÐ°Ñ Ð¿ÑедÑÑавлÑÐµÑ Ñобой обÑединение двÑÑ ÑÑÑок-опеÑандов:
console.log("my " + "string"); // в конÑоли вÑведеÑÑÑ ÑÑÑока "my string".
СокÑаÑÑннÑй опеÑаÑÐ¾Ñ Ð¿ÑиÑÐ²Ð°Ð¸Ð²Ð°Ð½Ð¸Ñ += Ñакже Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¸ÑполÑзован Ð´Ð»Ñ Ð¾Ð±ÑÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ (конкаÑенаÑии) ÑÑÑок:
var mystring = "alpha";
mystring += "bet"; // полÑÑаеÑÑÑ Ð·Ð½Ð°Ñение "alphabet" и пÑиÑваиваеÑÑÑ mystring.
УÑловнÑй (ÑеÑнаÑнÑй) опеÑаÑоÑ
УÑловнÑй опеÑаÑÐ¾Ñ ÑвлÑеÑÑÑ ÐµÐ´Ð¸Ð½ÑÑвеннÑм опеÑаÑоÑом JavaScript, коÑоÑÑй иÑполÑзÑÐµÑ ÑÑи опеÑанда. ÐпеÑаÑÐ¾Ñ Ð¿ÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ Ð¾Ð´Ð½Ð¾ из двÑÑ Ð·Ð½Ð°Ñений в завиÑимоÑÑи Ð¾Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ ÑÑловиÑ. СинÑакÑÐ¸Ñ Ð¾Ð¿ÐµÑаÑоÑа:
condition ? val1 : val2
ÐÑедÑпÑеждение: val1 и val2 обÑзаÑелÑно Ð´Ð¾Ð»Ð¶Ð½Ñ ÑÑо-Ñо возвÑаÑаÑÑ, поÑÑÐ¾Ð¼Ñ Ð² ÑÑой конÑÑÑÑкÑии нелÑÐ·Ñ Ð¸ÑполÑзоваÑÑ continue или break
ÐÑли condition (ÑÑловие)
- иÑÑина, Ñо опеÑаÑÐ¾Ñ Ð¿ÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ Ð·Ð½Ð°Ñение val1
. РпÑоÑивном ÑлÑÑае опеÑаÑÐ¾Ñ Ð¿ÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ Ð·Ð½Ð°Ñение val2
. ÐÑ Ð¼Ð¾Ð¶ÐµÑе иÑполÑзоваÑÑ ÑÑловнÑй опеÑаÑÐ¾Ñ Ð²Ð¾ вÑеÑ
ÑлÑÑаÑÑ
, где Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¸ÑполÑзован ÑÑандаÑÑнÑй опеÑаÑоÑ.
var status = age >= 18 ? "adult" : "minor";
Ðанное вÑÑажение пÑиÑÐ²Ð°Ð¸Ð²Ð°ÐµÑ Ð·Ð½Ð°Ñение "adult" пеÑеменной status
, еÑли age
Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°Ñение 18 или более. РпÑоÑивном ÑлÑÑае пеÑеменной status
пÑиÑваиваеÑÑÑ Ð·Ð½Ð°Ñение "minor".
ÐпеÑаÑÐ¾Ñ Ð·Ð°Ð¿ÑÑÐ°Ñ (,
) пÑоÑÑо вÑÑиÑлÑÐµÑ Ð¾Ð±Ð° опеÑанда и возвÑаÑÐ°ÐµÑ Ð·Ð½Ð°Ñение поÑледнего опеÑанда. ÐаннÑй опеÑаÑÐ¾Ñ Ð² оÑновном иÑполÑзÑеÑÑÑ Ð²Ð½ÑÑÑи Ñикла for
, ÑÑо позволÑÐµÑ Ð¿Ñи каждом пÑоÑ
ождении Ñикла одновÑеменно обновлÑÑÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð½ÐµÑколÑкиÑ
пеÑеменнÑÑ
.
ÐапÑимеÑ, еÑли a
ÑвлÑеÑÑÑ Ð´Ð²ÑмеÑнÑм маÑÑивом, ÐºÐ°Ð¶Ð´Ð°Ñ ÑÑÑока коÑоÑого ÑодеÑÐ¶Ð¸Ñ 10 ÑлеменÑов, Ñо ÑледÑÑÑий код Ñ Ð¸ÑполÑзованием опеÑаÑоÑа запÑÑÐ°Ñ Ð¿Ð¾Ð·Ð²Ð¾Ð»ÑÐµÑ Ð²ÑполнÑÑÑ Ð¾Ð´Ð½Ð¾Ð²Ñеменное пÑиÑаÑение двÑÑ
пеÑеменнÑÑ
. ÐаннÑй код вÑÐ²Ð¾Ð´Ð¸Ñ Ð½Ð° ÑкÑан знаÑÐµÐ½Ð¸Ñ Ð´Ð¸Ð°Ð³Ð¾Ð½Ð°Ð»ÑнÑÑ
ÑлеменÑов маÑÑива:
for (var i = 0, j = 9; i <= 9; i++, j--)
document.writeln("a[" + i + "][" + j + "]= " + a[i][j]);
УнаÑнÑе опеÑаÑоÑÑ
УнаÑÐ½Ð°Ñ Ð¾Ð¿ÐµÑаÑÐ¸Ñ - опеÑаÑÐ¸Ñ ÑолÑко Ñ Ð¾Ð´Ð½Ð¸Ð¼ опеÑандом.
delete
ÐпеÑаÑÐ¾Ñ delete вÑполнÑÐµÑ Ñдаление обÑекÑа, ÑвойÑÑва обÑекÑа, или ÑлеменÑа маÑÑива Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ñм индекÑом. СинÑакÑÐ¸Ñ Ð¾Ð¿ÐµÑаÑоÑа:
delete objectName;
delete objectName.property;
delete objectName[index];
delete property; // допÑÑÑимо ÑолÑко внÑÑÑи with
где objectName
пÑедÑÑавлÑÐµÑ Ñобой Ð¸Ð¼Ñ Ð¾Ð±ÑекÑа, property
- ÑвойÑÑво обÑекÑа, а index
- Ñелое ÑиÑло, ÑказÑваÑÑее на положение (Ð½Ð¾Ð¼ÐµÑ Ð¿Ð¾Ð·Ð¸Ñии) ÑлеменÑа в маÑÑиве.
ЧеÑвÑÑÑÑй ваÑÐ¸Ð°Ð½Ñ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾Ð·Ð²Ð¾Ð»ÑÐµÑ ÑдалиÑÑ ÑвойÑÑво обÑекÑа, но допÑÑкаеÑÑÑ ÑолÑко внÑÑÑи with
.
ÐÑ Ð¼Ð¾Ð¶ÐµÑе иÑполÑзоваÑÑ Ð¾Ð¿ÐµÑаÑÐ¾Ñ delete
Ð´Ð»Ñ ÑÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð¿ÐµÑеменнÑÑ
, обÑÑвленнÑÑ
неÑвно, но Ð²Ñ Ð½Ðµ можеÑе Ñ ÐµÐ³Ð¾ помоÑÑÑ ÑдалÑÑÑ Ð¿ÐµÑеменнÑе, обÑÑвленнÑе Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ var
.
ÐоÑле пÑÐ¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¾Ð¿ÐµÑаÑоÑа delete
ÑвойÑÑво ÑлеменÑа менÑеÑÑÑ Ð½Ð° undefined
. ÐпеÑаÑÐ¾Ñ delete
возвÑаÑÐ°ÐµÑ true
еÑли вÑполнение опеÑаÑии возможно; опеÑаÑÐ¾Ñ Ð²Ð¾Ð·Ð²ÑаÑÐ°ÐµÑ false
, еÑли вÑполнение опеÑаÑии невозможно.
x = 42;
var y = 43;
myobj = new Number();
myobj.h = 4; // ÑоздаÑм ÑвойÑÑво h
delete x; // возвÑаÑÐ°ÐµÑ true (можно ÑдалиÑÑ Ð¿ÐµÑеменнÑÑ Ð¾Ð±ÑÑвленнÑÑ Ð½ÐµÑвно)
delete y; // возвÑаÑÐ°ÐµÑ false (нелÑÐ·Ñ ÑдалиÑÑ Ð¿ÐµÑеменнÑÑ Ð¾Ð±ÑÑвленнÑÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ var)
delete Math.PI; // возвÑаÑÐ°ÐµÑ false (нелÑÐ·Ñ ÑдалиÑÑ Ð²ÑÑÑоеннÑе ÑвойÑÑва)
delete myobj.h; // возвÑаÑÐ°ÐµÑ true (можно ÑдалиÑÑ Ð¿Ð¾Ð»ÑзоваÑелÑÑкие ÑвойÑÑва)
delete myobj; // возвÑаÑÐ°ÐµÑ true (можно ÑдалиÑÑ Ð¾Ð±ÑÐµÐºÑ Ð¾Ð±ÑÑвленнÑй неÑвно)
Удаление ÑлеменÑов маÑÑива
Удаление ÑлеменÑа маÑÑива не влиÑÐµÑ Ð½Ð° Ð´Ð»Ð¸Ð½Ñ Ð¼Ð°ÑÑива. ÐапÑимеÑ, еÑли Ð²Ñ ÑдалиÑе a[3]
, ÑÐ»ÐµÐ¼ÐµÐ½Ñ a[4]
оÑÑанеÑÑÑ a[4],
a[3]
ÑÑÐ°Ð½ÐµÑ undefined.
Ðогда ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð¼Ð°ÑÑива ÑдалÑеÑÑÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Ð¾Ð¿ÐµÑаÑоÑа delete
, Ñо из маÑÑива ÑдалÑеÑÑÑ Ð·Ð½Ð°Ñение данного ÑлеменÑа. Ð ÑледÑÑÑем пÑимеÑе ÑÐ»ÐµÐ¼ÐµÐ½Ñ trees[3]
ÑдалÑн Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Ð¾Ð¿ÐµÑаÑоÑа delete
. Ðднако, ÑÐ»ÐµÐ¼ÐµÐ½Ñ trees[3]
оÑÑаÑÑÑÑ Ð°Ð´ÑеÑÑемÑм и возвÑаÑÐ°ÐµÑ Ð·Ð½Ð°Ñение undefined
.
var trees = new Array("redwood", "bay", "cedar", "oak", "maple");
delete trees[3];
if (3 in trees) {
// ÑÑловие не вÑполнÑеÑÑÑ
}
ÐÑли Ð²Ñ Ñ
оÑиÑе, ÑÑÐ¾Ð±Ñ ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð¾ÑÑавалÑÑ Ð² маÑÑиве, но имел знаÑение undefined, Ñо иÑполÑзÑйÑе клÑÑевое Ñлово undefined
вмеÑÑо опеÑаÑоÑа delete
. Ð ÑледÑÑÑем пÑимеÑе ÑлеменÑÑ trees[3]
пÑиÑвоено знаÑение undefined
, но ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð¿Ñи ÑÑом оÑÑаÑÑÑÑ Ð² маÑÑиве:
var trees = new Array("redwood", "bay", "cedar", "oak", "maple");
trees[3] = undefined;
if (3 in trees) {
// даннÑй блок кода вÑполнÑеÑÑÑ
}
ÐпеÑаÑÐ¾Ñ typeof
ÐпеÑаÑÐ¾Ñ typeof
иÑполÑзÑеÑÑÑ Ð¾Ð´Ð½Ð¸Ð¼ из ÑледÑÑÑиÑ
ÑпоÑобов:
typeof operand typeof (operand)
ÐпеÑаÑÐ¾Ñ typeof
возвÑаÑÐ°ÐµÑ ÑÑÑÐ¾ÐºÑ Ð¾Ð±Ð¾Ð·Ð½Ð°ÑаÑÑÑÑ Ñип невÑÑиÑленного опеÑанда. ÐнаÑение operand
Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ ÑÑÑокой, пеÑеменной, деÑкÑипÑоÑом, или обÑекÑом, Ñип коÑоÑого ÑледÑÐµÑ Ð¾Ð¿ÑеделиÑÑ. Скобки вокÑÑг опеÑанда необÑзаÑелÑнÑ.
ÐÑедположим, Ð²Ñ Ð¾Ð¿ÑеделÑеÑе ÑледÑÑÑие пеÑеменнÑе:
var myFun = new Function("5 + 2");
var shape = "round";
var size = 1;
var today = new Date();
ÐпеÑаÑÐ¾Ñ typeof
возвÑаÑÐ°ÐµÑ ÑледÑÑÑие ÑезÑлÑÑаÑÑ Ð´Ð»Ñ ÑÑиÑ
пеÑеменнÑÑ
:
typeof myFun; // возвÑаÑÐ°ÐµÑ "function"
typeof shape; // возвÑаÑÐ°ÐµÑ "string"
typeof size; // возвÑаÑÐ°ÐµÑ "number"
typeof today; // возвÑаÑÐ°ÐµÑ "object"
typeof dontExist; // возвÑаÑÐ°ÐµÑ "undefined"
ÐÐ»Ñ Ð´ÐµÑкÑипÑоÑов true
и null
опеÑаÑÐ¾Ñ typeof
возвÑаÑÐ°ÐµÑ ÑледÑÑÑие ÑезÑлÑÑаÑÑ:
typeof true; // возвÑаÑÐ°ÐµÑ "boolean"
typeof null; // возвÑаÑÐ°ÐµÑ "object"
ÐÐ»Ñ ÑиÑел и ÑÑÑок опеÑаÑÐ¾Ñ typeof
возвÑаÑÐ°ÐµÑ ÑледÑÑÑие ÑезÑлÑÑаÑÑ:
typeof 62; // возвÑаÑÐ°ÐµÑ "number"
typeof "Hello world"; // возвÑаÑÐ°ÐµÑ "string"
ÐÐ»Ñ ÑвойÑÑв опеÑаÑÐ¾Ñ typeof
возвÑаÑÐ°ÐµÑ Ñип знаÑÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ ÑвойÑÑва:
typeof document.lastModified; // возвÑаÑÐ°ÐµÑ "string"
typeof window.length; // возвÑаÑÐ°ÐµÑ "number"
typeof Math.LN2; // возвÑаÑÐ°ÐµÑ "number"
ÐÐ»Ñ Ð¼ÐµÑодов и ÑÑнкÑий опеÑаÑÐ¾Ñ typeof
возвÑаÑÐ°ÐµÑ ÑледÑÑÑие ÑезÑлÑÑаÑÑ:
typeof blur; // возвÑаÑÐ°ÐµÑ "function"
typeof eval; // возвÑаÑÐ°ÐµÑ "function"
typeof parseInt; // возвÑаÑÐ°ÐµÑ "function"
typeof shape.split; // возвÑаÑÐ°ÐµÑ "function"
ÐÐ»Ñ Ð²ÑÑÑоеннÑÑ
обÑекÑов опеÑаÑÐ¾Ñ typeof
возвÑаÑÐ°ÐµÑ ÑледÑÑÑие ÑезÑлÑÑаÑÑ:
typeof Date; // возвÑаÑÐ°ÐµÑ "function"
typeof Function; // возвÑаÑÐ°ÐµÑ "function"
typeof Math; // возвÑаÑÐ°ÐµÑ "object"
typeof Option; // возвÑаÑÐ°ÐµÑ "function"
typeof String; // возвÑаÑÐ°ÐµÑ "function"
ÐпеÑаÑÐ¾Ñ void
ÐпеÑаÑÐ¾Ñ void
иÑполÑзÑеÑÑÑ Ð»ÑбÑм из ÑледÑÑÑиÑ
ÑпоÑобов:
void (expression) void expression
ÐпеÑаÑÐ¾Ñ void
опÑеделÑÐµÑ Ð²ÑÑажение, коÑоÑое должно бÑÑÑ Ð²ÑÑиÑлено без возвÑаÑÐµÐ½Ð¸Ñ ÑезÑлÑÑаÑа. expression
- ÑÑо вÑÑажение JavaScript, ÑÑебÑÑÑее вÑÑиÑлениÑ. Скобки вокÑÑг вÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð½ÐµÐ¾Ð±ÑзаÑелÑнÑ, но иÑ
иÑполÑзование ÑвлÑеÑÑÑ Ð¿Ñавилом Ñ
оÑоÑего Ñона.
ÐÑ Ð¼Ð¾Ð¶ÐµÑе иÑполÑзоваÑÑ Ð¾Ð¿ÐµÑаÑÐ¾Ñ void
Ð´Ð»Ñ ÑÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ð½Ð° Ñо, ÑÑо опеÑанд-вÑÑажение ÑвлÑеÑÑÑ Ð³Ð¸Ð¿ÐµÑÑекÑÑовой ÑÑÑлкой. ÐÑи ÑÑом вÑÑажение обÑабаÑÑваеÑÑÑ, но не загÑÑжаеÑÑÑ Ð² ÑекÑÑий докÑменÑ.
СледÑÑÑий код ÑлÑÐ¶Ð¸Ñ Ð¿ÑимеÑом ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð³Ð¸Ð¿ÐµÑÑекÑÑовой ÑÑÑлки, коÑоÑÐ°Ñ Ð±ÐµÐ·Ð´ÐµÐ¹ÑÑвÑÐµÑ Ð¿Ñи нажаÑии на Ð½ÐµÑ Ð¿Ð¾Ð»ÑзоваÑелем. Ðогда полÑзоваÑÐµÐ»Ñ Ð½Ð°Ð¶Ð¸Ð¼Ð°ÐµÑ Ð½Ð° ÑÑÑлкÑ, void(0)
вÑÑиÑлÑеÑÑÑ ÑавнÑм undefined
, ÑÑо не пÑÐ¸Ð²Ð¾Ð´Ð¸Ñ Ð½Ð¸ к каким дейÑÑвиÑм в JavaScript.
<a href="javascript:void(0)">ÐажмиÑе здеÑÑ, ÑÑÐ¾Ð±Ñ Ð½Ð¸Ñего не пÑоизоÑло</a>
ÐÑиведÑннÑй ниже код ÑоздаÑÑ Ð³Ð¸Ð¿ÐµÑÑекÑÑовÑÑ ÑÑÑлкÑ, коÑоÑÐ°Ñ Ð¿Ð¾Ð´ÑвеÑÐ¶Ð´Ð°ÐµÑ Ð¾ÑпÑÐ°Ð²ÐºÑ ÑоÑÐ¼Ñ Ð¿Ñи клике на ней полÑзоваÑелем:
<a href="javascript:void(document.form.submit())">
ÐажмиÑе здеÑÑ, ÑÑÐ¾Ð±Ñ Ð¿Ð¾Ð´ÑвеÑдиÑÑ Ð¾ÑпÑÐ°Ð²ÐºÑ ÑоÑмÑ</a
>
ÐпеÑаÑоÑÑ Ð¾ÑноÑениÑ
ÐпеÑаÑÐ¾Ñ Ð¾ÑноÑÐµÐ½Ð¸Ñ ÑÑÐ°Ð²Ð½Ð¸Ð²Ð°ÐµÑ Ñвои опеÑÐ°Ð½Ð´Ñ Ð¸ возвÑаÑÐ°ÐµÑ ÑезÑлÑÑÐ°Ñ ÑÑÐ°Ð²Ð½ÐµÐ½Ð¸Ñ Ð² виде бÑлева знаÑениÑ.
ÐпеÑаÑÐ¾Ñ in
ÐпеÑаÑÐ¾Ñ in
возвÑаÑÐ°ÐµÑ true, еÑли ÑказаннÑй обÑÐµÐºÑ Ð¸Ð¼ÐµÐµÑ Ñказанное ÑвойÑÑво. СинÑакÑÐ¸Ñ Ð¾Ð¿ÐµÑаÑоÑа:
propNameOrNumber in objectName
где propNameOrNumber
- ÑÑÑока или ÑиÑловое вÑÑажение, пÑедÑÑавлÑÑÑее Ð¸Ð¼Ñ ÑвойÑÑва или Ð¸Ð½Ð´ÐµÐºÑ Ð¼Ð°ÑÑива, а objectName
- Ð¸Ð¼Ñ Ð¾Ð±ÑекÑа.
ÐекоÑоÑÑе пÑимеÑÑ ÑпоÑобов иÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¾Ð¿ÐµÑаÑоÑа in
:
// ÐаÑÑивÑ
var trees = new Array("redwood", "bay", "cedar", "oak", "maple");
0 in trees; // возвÑаÑÐ°ÐµÑ true
3 in trees; // возвÑаÑÐ°ÐµÑ true
6 in trees; // возвÑаÑÐ°ÐµÑ false
"bay" in trees; // возвÑаÑÐ°ÐµÑ false (ÑледÑÐµÑ ÑказаÑÑ Ð¸Ð½Ð´ÐµÐºÑ ÑлеменÑа маÑÑива,
// а не знаÑение ÑлеменÑа)
"length" in trees; // возвÑаÑÐ°ÐµÑ true (length ÑвлÑеÑÑÑ ÑвойÑÑвом обÑекÑа Array)
// ÐÑÑÑоеннÑе обÑекÑÑ
"PI" in Math; // возвÑаÑÐ°ÐµÑ true
var myString = new String("coral");
"length" in myString; // возвÑаÑÐ°ÐµÑ true
// ÐолÑзоваÑелÑÑкие обÑекÑÑ
var mycar = { make: "Honda", model: "Accord", year: 1998 };
"make" in mycar; // возвÑаÑÐ°ÐµÑ true
"model" in mycar; // возвÑаÑÐ°ÐµÑ true
ÐпеÑаÑÐ¾Ñ instanceof
ÐпеÑаÑÐ¾Ñ instanceof
возвÑаÑÐ°ÐµÑ true, еÑли заданнÑй обÑÐµÐºÑ ÑвлÑеÑÑÑ Ð¾Ð±ÑекÑом Ñказанного Ñипа. Ðго ÑинÑакÑиÑ:
objectName instanceof objectType
где objectName
- Ð¸Ð¼Ñ Ð¾Ð±ÑекÑа, Ñип коÑоÑого необÑ
одимо ÑÑавниÑÑ Ñ objectType
, а objectType
- Ñип обÑекÑа, напÑимеÑ, Date
или Array
.
ÐÑполÑзÑйÑе опеÑаÑÐ¾Ñ instanceof
, когда вам необÑ
одимо подÑвеÑдиÑÑ Ñип обÑекÑа во вÑÐµÐ¼Ñ Ð²ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð¿ÑогÑаммÑ. ÐапÑимеÑ, пÑи пеÑеÑ
ваÑе иÑклÑÑений Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе ÑоздаÑÑ ÑазлиÑнÑе пÑогÑаммнÑе пеÑеÑ
Ð¾Ð´Ñ Ð´Ð»Ñ Ð¾Ð±ÑабоÑки иÑклÑÑений в завиÑимоÑÑи Ð¾Ñ Ñипа обÑабаÑÑваемого иÑклÑÑениÑ.
ÐапÑимеÑ, ÑледÑÑÑий код иÑполÑзÑÐµÑ Ð¾Ð¿ÐµÑаÑÐ¾Ñ instanceof
Ð´Ð»Ñ Ð¿ÑовеÑки Ñого, ÑвлÑеÑÑÑ Ð»Ð¸ обÑÐµÐºÑ theDay
обÑекÑом Ñипа Date
. Так как theDay
дейÑÑвиÑелÑно ÑвлÑеÑÑÑ Ð¾Ð±ÑекÑом Ñипа Date
, Ñо пÑогÑамма вÑполнÑÐµÑ ÐºÐ¾Ð´, ÑодеÑжаÑийÑÑ Ð² ÑÑвеÑждении if
.
var theDay = new Date(1995, 12, 17);
if (theDay instanceof Date) {
// вÑполнÑемÑй код
}
ÐÑиоÑиÑÐµÑ Ð¾Ð¿ÐµÑаÑоÑов
ÐÑиоÑиÑÐµÑ Ð¾Ð¿ÐµÑаÑоÑов опÑеделÑÐµÑ Ð¿Ð¾ÑÑдок Ð¸Ñ Ð²ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð¿Ñи вÑÑиÑлении вÑÑажениÑ. ÐÑ Ð¼Ð¾Ð¶ÐµÑе влиÑÑÑ Ð½Ð° пÑиоÑиÑÐµÑ Ð¾Ð¿ÐµÑаÑоÑов Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Ñкобок.
ÐÑиведÑÐ½Ð½Ð°Ñ Ð½Ð¸Ð¶Ðµ ÑаблиÑа опиÑÑÐ²Ð°ÐµÑ Ð¿ÑиоÑиÑÐµÑ Ð¾Ð¿ÐµÑаÑоÑов Ð¾Ñ Ð½Ð°Ð¸Ð²ÑÑÑего до низÑего.
Тип опеÑаÑоÑа ÐпеÑаÑоÑÑ ÑвойÑÑво обÑекÑа. []
вÑзов, Ñоздание ÑкземплÑÑа обÑекÑа () new
оÑÑиÑание, инкÑÐµÐ¼ÐµÐ½Ñ ! ~ - + ++ -- typeof void delete
Ñмножение, деление * / %
Ñложение, вÑÑиÑание + -
побиÑовÑй Ñдвиг << >> >>>
ÑÑавнение, вÑ
ождение < <= > >= in instanceof
ÑавенÑÑво == != === !==
биÑовое-и &
биÑовое-иÑклÑÑаÑÑее-или ^
биÑовое-или |
логиÑеÑкое-и &&
логиÑеÑкое-или ||
ÑÑловнÑй (ÑеÑнаÑнÑй) опеÑаÑÐ¾Ñ ?:
пÑиÑваивание = += -= *= /= %= <<= >>= >>>= &= ^= |=
запÑÑÐ°Ñ ,
Ðолее подÑÐ¾Ð±Ð½Ð°Ñ Ð²ÐµÑÑÐ¸Ñ Ð´Ð°Ð½Ð½Ð¾Ð¹ ÑаблиÑÑ, ÑодеÑжаÑÐ°Ñ ÑÑÑлки и дополниÑелÑнÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¿Ð¾ ÐºÐ°Ð¶Ð´Ð¾Ð¼Ñ Ð¾Ð¿ÐµÑаÑоÑÑ, Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ Ð² ÑпÑавоÑнике JavaScript.
ÐÑÑажениÑÐÑÑажением ÑвлÑеÑÑÑ Ð»Ñбой коÑÑекÑнÑй блок кода, коÑоÑÑй возвÑаÑÐ°ÐµÑ Ð·Ð½Ð°Ñение.
ÐонÑепÑÑалÑно, ÑÑÑеÑÑвÑÑÑ Ð´Ð²Ð° Ñипа вÑÑажений: Ñе коÑоÑÑе пÑиÑваиваÑÑ Ð¿ÐµÑеменной знаÑение, и Ñе, коÑоÑÑе вÑÑиÑлÑÑÑ Ð·Ð½Ð°Ñение без его пÑиÑваиваниÑ.
ÐÑÑажение x = 7
ÑвлÑеÑÑÑ Ð¿ÑимеÑом вÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð¿ÐµÑвого Ñипа. Ðанное вÑÑажение иÑполÑзÑÐµÑ Ð¾Ð¿ÐµÑаÑÐ¾Ñ = Ð´Ð»Ñ Ð¿ÑиÑÐ²Ð°Ð¸Ð²Ð°Ð½Ð¸Ñ Ð¿ÐµÑеменной x
знаÑÐµÐ½Ð¸Ñ 7. Само вÑÑажение Ñакже ÑавнÑеÑÑÑ 7.
Ðод 3 + 4
ÑвлÑеÑÑÑ Ð¿ÑимеÑом вÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð²ÑоÑого Ñипа. Ðанное вÑÑажение иÑполÑзÑÐµÑ Ð¾Ð¿ÐµÑаÑÐ¾Ñ "+" Ð´Ð»Ñ ÑÐ»Ð¾Ð¶ÐµÐ½Ð¸Ñ ÑиÑел 3 и 4 без пÑиÑÐ²Ð°Ð¸Ð²Ð°Ð½Ð¸Ñ Ð¿ÐµÑеменной полÑÑенного ÑезÑлÑÑаÑа 7.
ÐÑе вÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð² JavaScript делÑÑÑÑ Ð½Ð° ÑледÑÑÑие каÑегоÑии:
ÐазовÑе клÑÑевÑе Ñлова и оÑновнÑе вÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð² JavaScript.
ÐпеÑаÑоÑthis
ÐÑполÑзÑйÑе клÑÑевое Ñлово this
Ð´Ð»Ñ ÑÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ð½Ð° ÑекÑÑий обÑекÑ. РобÑем ÑлÑÑае this
ÑказÑÐ²Ð°ÐµÑ Ð½Ð° вÑзÑваемÑй обÑекÑ, коÑоÑÐ¾Ð¼Ñ Ð¿ÑÐ¸Ð½Ð°Ð´Ð»ÐµÐ¶Ð¸Ñ Ð´Ð°Ð½Ð½Ñй меÑод. ÐÑполÑзÑйÑе this
ÑледÑÑÑим обÑазом:
this["propertyName"] this.propertyName
ÐÑедположим, ÑÑнкÑÐ¸Ñ validate
вÑполнÑÐµÑ Ð¿ÑовеÑÐºÑ ÑвойÑÑва value
некоÑоÑого обÑекÑа; задан обÑекÑ, а Ñакже веÑÑ
нÑÑ Ð¸ нижнÑÑ Ð³ÑаниÑа велиÑÐ¸Ð½Ñ Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ ÑвойÑÑва:
function validate(obj, lowval, hival) {
if (obj.value < lowval || obj.value > hival) alert("ÐевеÑное знаÑение!");
}
ÐÑ Ð¼Ð¾Ð¶ÐµÑе вÑзваÑÑ ÑÑнкÑÐ¸Ñ validate
Ð´Ð»Ñ Ð¾Ð±ÑабоÑÑика ÑобÑÑÐ¸Ñ onChange
Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ ÑлеменÑа ÑоÑмÑ, иÑполÑзÑÑ this
Ð´Ð»Ñ ÑÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ð½Ð° ÑÐ»ÐµÐ¼ÐµÐ½Ñ ÑоÑмÑ, как ÑÑо показано в ÑледÑÑÑем пÑимеÑе:
<b>ÐведиÑе ÑиÑло Ð¾Ñ 18 до 99:</b>
<input type="text" name="age" size="3" onChange="validate(this, 18, 99);" />
ÐпеÑаÑÐ¾Ñ Ð³ÑÑппиÑовки
ÐпеÑаÑÐ¾Ñ Ð³ÑÑппиÑовки "Ñкобки" ( )
конÑÑолиÑÑÐµÑ Ð¿ÑиоÑиÑÐµÑ Ð²ÑÑиÑлений в вÑÑажениÑÑ
. ÐапÑимеÑ, Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе пеÑеопÑеделиÑÑ Ð¿Ð¾ÑÑдок Ñак, ÑÑÐ¾Ð±Ñ Ñложение вÑполнÑлоÑÑ Ð´Ð¾ ÑмножениÑ:
var a = 1;
var b = 2;
var c = 3;
// обÑÑнÑй поÑÑдок
a + b * c; // 7
// по ÑмолÑÐ°Ð½Ð¸Ñ Ð²ÑполнÑеÑÑÑ Ñак
a + (b * c); // 7
// ÑепеÑÑ Ð¿Ð¾Ð¼ÐµÐ½Ñем пÑиоÑиÑÐµÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Ñкобок,
// ÑÑÐ¾Ð±Ñ Ñложение вÑполнÑлоÑÑ Ð´Ð¾ ÑмножениÑ
(a + b) * c; // 9
// ÑÑо ÑквиваленÑно ÑледÑÑÑемÑ
a * c + b * c; // 9
УпÑоÑÑннÑй ÑинÑакÑÐ¸Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¼Ð°ÑÑивов и генеÑаÑоÑов
УпÑоÑÑннÑй ÑинÑакÑÐ¸Ñ - ÑкÑпеÑименÑалÑÐ½Ð°Ñ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ JavaScript, коÑоÑÐ°Ñ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ бÑÐ´ÐµÑ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð° в бÑдÑÑие веÑÑии ECMAScript. ÐÑÑÑ 2 веÑÑии ÑинÑакÑиÑа:
[for (x of y) x]
УпÑоÑÑннÑй ÑинÑакÑÐ¸Ñ Ð´Ð»Ñ Ð¼Ð°ÑÑивов.
(for (x of y) y)
УпÑоÑÑннÑй ÑинÑакÑÐ¸Ñ Ð´Ð»Ñ Ð³ÐµÐ½ÐµÑаÑоÑов.
УпÑоÑÑннÑе ÑинÑакÑиÑÑ ÑÑÑеÑÑвÑÑÑ Ð²Ð¾ Ð¼Ð½Ð¾Ð³Ð¸Ñ ÑзÑÐºÐ°Ñ Ð¿ÑогÑаммиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¸ позволÑÑÑ Ð²Ð°Ð¼ бÑÑÑÑо ÑобиÑаÑÑ Ð½Ð¾Ð²Ñй маÑÑив, оÑнованнÑй на ÑÑÑеÑÑвÑÑÑем. ÐапÑимеÑ:
[for (i of [ 1, 2, 3 ]) i*i ];
// [ 1, 4, 9 ]
var abc = [ "A", "B", "C" ];
[for (letters of abc) letters.toLowerCase()];
// [ "a", "b", "c" ]
ÐевоÑÑоÑонние вÑÑажениÑ
ÐнаÑениÑм Ñлева назнаÑаÑÑÑÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ ÑпÑава.
new
ÐÑ Ð¼Ð¾Ð¶ÐµÑе иÑполÑзоваÑÑ Ð¾Ð¿ÐµÑаÑÐ¾Ñ new
Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ ÑкземплÑÑа обÑекÑа полÑзоваÑелÑÑкого Ñипа или одного из вÑÑÑоеннÑÑ
обÑекÑов. ÐÑполÑзÑйÑе опеÑаÑÐ¾Ñ new
ÑледÑÑÑим обÑазом:
var objectName = new objectType([param1, param2, ..., paramN]);
super
ÐлÑÑевое Ñлово иÑполÑзÑеÑÑÑ, ÑÑÐ¾Ð±Ñ Ð²ÑзÑваÑÑ ÑÑнкÑии ÑодиÑелÑÑкого обÑекÑа. ÐÑо полезно и Ñ ÐºÐ»Ð°ÑÑами Ð´Ð»Ñ Ð²Ñзова конÑÑÑÑкÑоÑа ÑодиÑелÑ, напÑимеÑ.
super([arguments]); // вÑзÑÐ²Ð°ÐµÑ ÐºÐ¾Ð½ÑÑÑÑкÑÐ¾Ñ ÑодиÑелÑ. super.functionOnParent([arguments]);
ÐпеÑаÑÐ¾Ñ ÑаÑÑиÑениÑ
ÐпеÑаÑÐ¾Ñ ÑаÑÑиÑÐµÐ½Ð¸Ñ Ð¿Ð¾Ð·Ð²Ð¾Ð»ÑÐµÑ Ð²ÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ ÑаÑÑиÑÑÑÑÑÑ Ð² меÑÑÐ°Ñ Ñ Ð¼Ð½Ð¾Ð¶ÐµÑÑвом аÑгÑменÑов (Ð´Ð»Ñ Ð²Ñзовов ÑÑнкÑий) или множеÑÑве ÑлеменÑов (Ð´Ð»Ñ Ð¼Ð°ÑÑивов).
ÐÑимеÑ: СегоднÑ, еÑли Ñ Ð²Ð°Ñ ÐµÑÑÑ Ð¼Ð°ÑÑив и Ð²Ñ Ñ
оÑиÑе ÑоздаÑÑ Ð½Ð¾Ð²Ñй Ñ ÑÑÑеÑÑвÑÑÑей ÑаÑÑÑÑ Ð¿ÐµÑвого, Ñо лиÑеÑалÑного ÑинÑакÑиÑа маÑÑива Ñже не доÑÑаÑоÑно, и Ð²Ñ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð¿Ð¸ÑаÑÑ Ð¸Ð¼Ð¿ÐµÑаÑивнÑй (без ваÑианÑов) код, иÑполÑзÑÑ ÐºÐ¾Ð¼Ð±Ð¸Ð½Ð°ÑÐ¸Ñ push
, splice
, concat
и Ñ.д. Ðо Ñ ÑÑим опеÑаÑоÑом код ÑÑановиÑÑÑ Ð±Ð¾Ð»ÐµÐµ коÑоÑким:
var parts = ["shoulder", "knees"];
var lyrics = ["head", ...parts, "and", "toes"];
ÐÐ¾Ñ Ð¾Ð¶Ð¸Ð¼ обÑазом опеÑаÑÐ¾Ñ ÑабоÑÐ°ÐµÑ Ñ Ð²Ñзовами ÑÑнкÑий:
function f(x, y, z) {}
var args = [0, 1, 2];
f(...args);
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4