ÐÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð¸ опеÑаÑоÑÑ
ÐÑа глава опиÑÑÐ²Ð°ÐµÑ Ð²ÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð¸ опеÑаÑоÑÑ ÑзÑка JavaScript, Ñакие как опеÑаÑоÑÑ Ð¿ÑиÑваиваниÑ, ÑÑавнениÑ, аÑиÑмеÑиÑеÑкие, биÑовÑе, логиÑеÑкие, ÑÑÑоÑнÑе, и ÑазлиÑнÑе ÑпеÑиалÑнÑе опеÑаÑоÑÑ.
ÐолнÑй и деÑалÑнÑй ÑпиÑок опеÑаÑоÑов и вÑÑажений Ñакже доÑÑÑпен в ÑÑом ÑÑководÑÑве.
ÐпеÑаÑоÑÑ
Ð JavaScript еÑÑÑ ÑледÑÑÑие ÑÐ¸Ð¿Ñ Ð¾Ð¿ÐµÑаÑоÑов. ÐаннÑй подÑаздел опиÑÑÐ²Ð°ÐµÑ ÐºÐ°Ð¶Ð´Ñй Ñип и ÑодеÑÐ¶Ð¸Ñ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾Ð± Ð¸Ñ Ð¿ÑиоÑиÑеÑÐ°Ñ Ð´ÑÑг над дÑÑгом.
- ÐпеÑаÑоÑÑ Ð¿ÑиÑваиваниÑ
- ÐпеÑаÑоÑÑ ÑÑавнениÑ
- ÐÑиÑмеÑиÑеÑкие опеÑаÑоÑÑ
- ÐиÑовÑе (поÑазÑÑднÑе) опеÑаÑоÑÑ
- ÐогиÑеÑкие опеÑаÑоÑÑ
- СÑÑоковÑе опеÑаÑоÑÑ
- УÑловнÑй (ÑеÑнаÑнÑй) опеÑаÑоÑ
- ÐпеÑаÑÐ¾Ñ Ð·Ð°Ð¿ÑÑаÑ
- УнаÑнÑе опеÑаÑоÑÑ
- ÐпеÑаÑоÑÑ Ð¾ÑноÑениÑ
- ÐÑиоÑиÑÐµÑ Ð¾Ð¿ÐµÑаÑоÑов
JavaScript поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ Ð±Ð¸Ð½Ð°ÑнÑе и ÑнаÑнÑе опеÑаÑоÑÑ, а Ñакже еÑÑ Ð¾Ð´Ð¸Ð½ ÑпеÑиалÑнÑй ÑеÑнаÑнÑй опеÑаÑÐ¾Ñ - ÑÑловнÑй опеÑаÑоÑ. ÐинаÑÐ½Ð°Ñ Ð¾Ð¿ÐµÑаÑÐ¸Ñ Ð¸ÑполÑзÑÐµÑ Ð´Ð²Ð° опеÑанда, один пеÑед опеÑаÑоÑом и дÑÑгой за ним:
operand1 operator operand2
ÐапÑимеÑ: 3+4 или x*y.
Ð ÑÐ²Ð¾Ñ Ð¾ÑеÑÐµÐ´Ñ ÑнаÑÐ½Ð°Ñ Ð¾Ð¿ÐµÑаÑÐ¸Ñ Ð¸ÑполÑзÑÐµÑ Ð¾Ð´Ð¸Ð½ опеÑанд, пеÑед или поÑле опеÑаÑоÑа:
operator operand
или
operand operator
ÐапÑимеÑ: x++ или ++x.
ÐпеÑаÑоÑÑ Ð¿ÑиÑваиваниÑ
Ð ÑезÑлÑÑаÑе опеÑаÑии пÑиÑÐ²Ð°Ð¸Ð²Ð°Ð½Ð¸Ñ Ð¾Ð¿ÐµÑÐ°Ð½Ð´Ñ Ñлева Ð¾Ñ Ð¾Ð¿ÐµÑаÑоÑа пÑиÑÐ²Ð°Ð¸Ð²Ð°Ð½Ð¸Ñ (знак "=") ÑÑÑанавливаеÑÑÑ Ð·Ð½Ð°Ñение , коÑоÑое беÑÑÑÑÑ Ð¸Ð· пÑавого опеÑанда. ÐÑновнÑм опеÑаÑоÑом пÑиÑÐ²Ð°Ð¸Ð²Ð°Ð½Ð¸Ñ ÑвлÑеÑÑÑ =, он пÑиÑÐ²Ð°Ð¸Ð²Ð°ÐµÑ Ð·Ð½Ð°Ñение пÑавого опеÑанда опеÑандÑ, Ð½Ð°Ñ Ð¾Ð´ÑÑемÑÑÑ Ñлева. Таким обÑазом, вÑÑажение x = y ознаÑаеÑ, ÑÑо x пÑиÑваиваеÑÑÑ Ð·Ð½Ð°Ñение y.
СÑÑеÑÑвÑÑÑ Ñакже ÑоÑÑавнÑе опеÑаÑоÑÑ Ð¿ÑиÑваиваниÑ, коÑоÑÑе иÑполÑзÑÑÑÑÑ Ð´Ð»Ñ ÑокÑаÑÑнного пÑедÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¾Ð¿ÐµÑаÑий, опиÑаннÑÑ Ð² ÑледÑÑÑей ÑаблиÑе:
| ÐÐ¼Ñ | СокÑаÑÑннÑй опеÑаÑÐ¾Ñ | СмÑÑл |
|---|---|---|
| ÐÑиÑваивание | x = y |
x = y |
| ÐÑиÑваивание Ñо Ñложением | 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 |
| ÐÑиÑваивание Ñ Ð»ÐµÐ²Ñм Ñдвигом | x <<= y |
x = x << y |
| ÐÑиÑваивание Ñ Ð¿ÑавÑм Ñдвигом | x >>= y |
x = x >> y |
| ÐÑиÑваивание Ñ Ð±ÐµÐ·Ð·Ð½Ð°ÐºÐ¾Ð²Ñм Ñдвигом впÑаво | x >>>= y |
x = x >>> y |
| ÐÑиÑваивание Ñ Ð¿Ð¾Ð±Ð¸ÑовÑм AND | x &= y |
x = x & y |
| ÐÑиÑваивание Ñ Ð¿Ð¾Ð±Ð¸ÑовÑм XOR | x ^= y |
x = x ^ y |
| ÐÑиÑваивание Ñ Ð¿Ð¾Ð±Ð¸ÑовÑм OR | x |= y |
x = 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 пÑобÑÐµÑ Ð¿ÑеобÑазоваÑÑ Ð¸Ñ
в Ñип, подÑ
одÑÑий Ð´Ð»Ñ ÑÑавнениÑ. Такое поведение обÑÑно пÑоиÑÑ
Ð¾Ð´Ð¸Ñ Ð¿Ñи ÑÑавнении ÑиÑловÑÑ
опеÑандов. ÐдинÑÑвеннÑм иÑклÑÑением из данного пÑавила ÑвлÑеÑÑÑ ÑÑавнение Ñ Ð¸ÑполÑзованием опеÑаÑоÑов === и !==, коÑоÑÑе пÑоизводÑÑ ÑÑÑогое ÑÑавнение на ÑавенÑÑво или неÑавенÑÑво. ÐÑи опеÑаÑоÑÑ Ð½Ðµ пÑÑаÑÑÑÑ Ð¿ÑеобÑазоваÑÑ Ð¾Ð¿ÐµÑÐ°Ð½Ð´Ñ Ð¿ÐµÑед иÑ
ÑÑавнением. СледÑÑÑÐ°Ñ ÑаблиÑа опиÑÑÐ²Ð°ÐµÑ Ð¾Ð¿ÐµÑаÑоÑÑ ÑÑÐ°Ð²Ð½ÐµÐ½Ð¸Ñ Ð² конÑекÑÑе ÑледÑÑÑего пÑимеÑа кода:
var var1 = 3,
var2 = 4;
| ÐпеÑаÑÐ¾Ñ | ÐпиÑание | ÐÑимеÑÑ, возвÑаÑаÑÑие true |
|---|---|---|
Равно (==) |
ÐозвÑаÑÐ°ÐµÑ 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 делÑÑÑÑ Ð½Ð° ÑледÑÑÑие каÑегоÑии:
- ÐÑиÑмеÑиÑеÑкие: вÑÑиÑлÑÑÑÑÑ Ð² ÑиÑло, напÑимеÑ: 3.14159 (ÐÑполÑзÑÑÑ Ð°ÑиÑмеÑиÑеÑкие опеÑаÑоÑÑ).
- СÑÑоковÑе: вÑÑиÑлÑÑÑÑÑ Ð² ÑекÑÑовÑÑ ÑÑÑокÑ, напÑимеÑ: "Fred" или "234" (ÐÑполÑзÑÑÑ ÑÑÑоковÑе опеÑаÑоÑÑ).
- ÐогиÑеÑкие: вÑÑиÑлÑÑÑÑÑ Ð² true или false (ÐÑполÑзÑÑÑ Ð»Ð¾Ð³Ð¸ÑеÑкие опеÑаÑоÑÑ).
- ÐÑновнÑе вÑÑажениÑ: ÐазовÑе клÑÑевÑе Ñлова и оÑновнÑе вÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð² 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);