ÐекÑиÑеÑкий ÑинÑакÑиÑ
ÐÑÐ¾Ñ Ñаздел опиÑÑÐ²Ð°ÐµÑ ÑинÑакÑÐ¸Ñ JavaScript. ÐÑÑ Ð¾Ð´Ð½Ñй код ECMAScript ÑкÑипÑов ÑканиÑÑеÑÑÑ Ñлева напÑаво и пÑеобÑазÑеÑÑÑ Ð² поÑледоваÑелÑноÑÑÑ Ð½Ð°Ð¹Ð´ÐµÐ½Ð½ÑÑ ÑлеменÑов в ÑокенÑ, ÑпÑавлÑÑÑие ÑимволÑ, оконÑÐ°Ð½Ð¸Ñ ÑÑÑок, комменÑаÑии или пÑобелÑ.
ECMAScript Ñакже опÑеделÑÐµÑ ÐºÐ»ÑÑевÑе Ñлова и лиÑеÑÐ°Ð»Ñ Ð¸ Ð¸Ð¼ÐµÐµÑ ÑÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ð´Ð»Ñ Ð°Ð²ÑомаÑиÑеÑкой вÑÑавки ÑоÑек Ñ Ð·Ð°Ð¿ÑÑой к конÑÑ Ð¸Ð½ÑÑÑÑкÑии.
СпеÑÑимволÑ
СпеÑÑÐ¸Ð¼Ð²Ð¾Ð»Ñ Ð½Ðµ имеÑÑ Ð²Ð¸Ð·ÑалÑного пÑедÑÑавлениÑ, однако иÑполÑзÑÑÑÑÑ Ð´Ð»Ñ ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸Ð½ÑеÑпÑеÑаÑией ÑекÑÑа.
| Code point | Name | Abbreviation | Description |
|---|---|---|---|
U+200C |
Zero width non-joiner | <ZWNJ> | РазмеÑаеÑÑÑ Ð¼ÐµÐ¶Ð´Ñ Ñимволами во избежание Ð¸Ñ Ñоединений в лигаÑÑÑÑ Ð´Ð»Ñ Ð½ÐµÐºÐ¾ÑоÑÑÑ ÑзÑков (Wikipedia) |
U+200D |
Zero width joiner | <ZWJ> | РазмеÑаеÑÑÑ Ð¼ÐµÐ¶Ð´Ñ Ñимволами, коÑоÑÑе не могли Ð±Ñ Ð½Ð¾ÑмалÑно обÑединиÑÑÑÑ Ð´Ð»Ñ Ñого, ÑÑÐ¾Ð±Ñ ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ Ð¾ÑÑиÑовÑвалиÑÑ, иÑполÑзÑÑ Ð¸Ñ ÑоединиÑелÑнÑÑ ÑоÑÐ¼Ñ Ð² некоÑоÑÑÑ ÑзÑÐºÐ°Ñ (Wikipedia) |
U+FEFF |
Byte order mark | <BOM> | ÐÑполÑзÑеÑÑÑ Ð²Ð½Ð°Ñале ÑкÑипÑа Ð´Ð»Ñ Ñого, ÑÑÐ¾Ð±Ñ Ð¿Ð¾Ð¼ÐµÑиÑÑ Ð®Ð½Ð¸ÐºÐ¾Ð´ и поÑÑдок байÑов (Wikipedia) |
ÐÑобелÑ
ÐÑобелÑнÑе ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ ÑлÑÑÑаÑÑ ÑиÑабелÑноÑÑÑ Ð¸ÑÑ Ð¾Ð´Ð½Ð¾Ð³Ð¾ ÑекÑÑа и ÑазделÑÐµÑ ÑÐ¾ÐºÐµÐ½Ñ Ð´ÑÑг Ð¾Ñ Ð´ÑÑга. ÐÑобелÑнÑе ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ Ð¾Ð±ÑÑно не обÑзаÑелÑÐ½Ñ Ð´Ð»Ñ ÑÑнкÑиониÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÐºÐ¾Ð´Ð°. УÑилиÑÑ Ð´Ð»Ñ ÑменÑÑÐµÐ½Ð¸Ñ Ð¾Ð±ÑÑма кода ÑаÑÑо ÑдалÑÑÑ Ð¿ÑобелÑнÑе ÑимволÑ, ÑÑÐ¾Ð±Ñ ÑменÑÑиÑÑ Ð¾Ð±Ñем кода.
| Code point | Name | Abbreviation | Description | Escape sequence |
|---|---|---|---|---|
| U+0009 | Character tabulation | <HT> | ÐоÑизонÑалÑÐ½Ð°Ñ ÑабÑлÑÑÐ¸Ñ | \t |
| U+000B | Line tabulation | <VT> | ÐеÑÑикалÑÐ½Ð°Ñ ÑабÑлÑÑÐ¸Ñ | \v |
| U+000C | Form feed | <FF> | Символ конÑÑÐ¾Ð»Ñ ÑазÑÑва ÑÑÑаниÑÑ (Wikipedia) | \f |
| U+0020 | Space | <SP> | ÐбÑÑнÑй пÑобел | |
| U+00A0 | No-break space | <NBSP> | ÐбÑÑнÑй пÑобел без ÑоÑки, на коÑоÑой Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑоизойÑи ÑазÑÑв ÑÑÑаниÑÑ | |
| Others | Other Unicode space characters | <USP> | ÐÑÑгие ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ Ð² Ðикипедии |
ÐконÑание ÑÑÑок
Рдополнение к пÑобелÑнÑм Ñимволам, ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ Ð¾ÐºÐ¾Ð½ÑÐ°Ð½Ð¸Ñ ÑÑÑок Ñоже иÑполÑзÑÑÑÑÑ Ð´Ð»Ñ ÑиÑабелÑноÑÑи иÑÑ Ð¾Ð´Ð½Ð¾Ð³Ð¾ кода. Ðднако, в некоÑоÑÑÑ ÑлÑÑаÑÑ , ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ Ð¾ÐºÐ¾Ð½ÑÐ°Ð½Ð¸Ñ ÑÑÑок могÑÑ Ð²Ð»Ð¸ÑÑÑ Ð½Ð° вÑполнение JavaScript-кода, Ñ.к. еÑÑÑ Ð½ÐµÐºÐ¾ÑоÑÑе меÑÑа, где они запÑеÑенÑ.
ÐконÑÐ°Ð½Ð¸Ñ ÑÑÑок Ñакже заÑÑагиваÑÑ Ð¿ÑоÑеÑÑ Ð°Ð²ÑомаÑиÑеÑкого пÑоÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ ÑоÑки Ñ Ð·Ð°Ð¿ÑÑой. Также оконÑÐ°Ð½Ð¸Ñ ÑÑÑок попадаÑÑ Ð¿Ð¾Ð´ ÑÑÐ»Ð¾Ð²Ð¸Ñ ÑегÑлÑÑнÑÑ Ð²ÑÑажений пÑи поиÑке \s клаÑÑа.
Ð ECMAScript, в каÑеÑÑве оконÑÐ°Ð½Ð¸Ñ ÑÑÑок можно иÑполÑзоваÑÑ ÑолÑко ниже пеÑеÑиÑленнÑе Юникод ÑимволÑ. ÐÑÑгие ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ Ð¾ÐºÐ¾Ð½ÑÐ°Ð½Ð¸Ñ ÑÑÑок бÑдÑÑ Ð¸Ð½ÑеÑпÑеÑиÑованÑ, как пÑобелÑнÑе ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ (напÑимеÑ, Next Line, NEL, U+0085 бÑдÑÑ Ð¸Ð½ÑеÑпÑеÑиÑоваÑÑÑÑ, как пÑобелÑнÑе ÑимволÑ).
| Code point | Name | Abbreviation | Description | Escape sequence |
|---|---|---|---|---|
| U+000A | Line Feed | <LF> | ÐÐ¾Ð²Ð°Ñ ÑÑÑока в UNIX ÑиÑÑÐµÐ¼Ð°Ñ . | \n |
| U+000D | Carriage Return | <CR> | ÐÐ¾Ð²Ð°Ñ ÑÑÑока в Commodore и ÑÐ°Ð½Ð½Ð¸Ñ Mac systems. | \r |
| U+2028 | Line Separator | <LS> | Wikipedia | |
| U+2029 | Paragraph Separator | <PS> | Wikipedia |
ÐомменÑаÑии
ÐомменÑаÑии иÑполÑзÑÑÑÑÑ Ð´Ð»Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð´Ñказок, замеÑок, пÑедложений или пÑедÑпÑеждений. Ðни могÑÑ ÑпÑоÑÑиÑÑ ÑÑение и понимание кода. Также они могÑÑ Ð±ÑÑÑ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ñ Ð´Ð»Ñ Ð¿ÑедоÑвÑаÑÐµÐ½Ð¸Ñ Ð²ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÐºÐ¾Ð´Ð° (ÑÑÐ¾Ñ Ð¿ÑиÑм пÑакÑикÑеÑÑÑ Ð¿Ñи оÑладке кода).
Ð JavaScript еÑÑÑ Ð½ÐµÑколÑко ÑпоÑобов ÑказаÑÑ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑаÑии в коде.
ÐеÑвÑй ÑпоÑоб // комменÑаÑий; в ÑÑом ÑлÑÑае веÑÑ ÑекÑÑ Ð² ÑÑÑоке поÑле двойного ÑлеÑа бÑÐ´ÐµÑ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑаÑием, напÑимеÑ:
function comment() {
// ÐÑо комменÑаÑий в ÑÑÑоке
console.log("Hello world!");
}
comment();
ÐÑоÑой ÑпоÑоб - ÑÑо /* */, Ñакой ÑпоÑоб более гибок, Ñем пеÑвÑй.
ÐапÑимеÑ, Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе иÑполÑзоваÑÑ ÐµÐ³Ð¾ в одной ÑÑÑоке:
function comment() {
/* ÐÑо одноÑÑÑоÑнÑй комменÑаÑий */
console.log("Hello world!");
}
comment();
Ðибо Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе ÑделаÑÑ Ð¼Ð½Ð¾Ð³Ð¾ÑÑÑоÑнÑй комменÑаÑий, как показано здеÑÑ:
function comment() {
/* ÐÑÐ¾Ñ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑаÑий ÑаÑполагаеÑÑÑ Ð½Ð° неÑколÑкиÑ
линиÑÑ
.
ÐбÑаÑиÑе внимание, ÑÑо вам не нÑжно обÑÑваÑÑ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑаÑий, пока Ð²Ñ ÐµÐ³Ð¾ не законÑиÑе*/
console.log("Hello world!");
}
comment();
Также, еÑли пожелаеÑе, Ñо Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе иÑполÑзоваÑÑ Ñакое комменÑиÑование поÑÑеди ÑÑÑоки кода. ХоÑÑ ÑÑо Ð¼Ð¾Ð¶ÐµÑ ÑÑ ÑдÑиÑÑ ÑиÑабелÑноÑÑÑ ÐºÐ¾Ð´Ð°:
function comment(x) {
console.log("Hello " + x /* вÑÑавÑÑе знаÑение x */ + " !");
}
comment("world");
ЧÑÐ¾Ð±Ñ Ð¾ÑклÑÑиÑÑ Ð²Ñполнение кода, пÑоÑÑо обеÑниÑе код в комменÑаÑий, как здеÑÑ:
function comment() {
/* console.log("Hello world!"); */
}
comment();
Ð ÑÑом ÑлÑÑае console.log() никогда не вÑполниÑÑÑ, пока он внÑÑÑи комменÑаÑиÑ. Таким ÑпоÑобом можно оÑклÑÑиÑÑ Ð»Ñбое колиÑеÑÑво ÑÑÑок кода.
Шебанг комменÑаÑии
ТÑеÑий ÑпеÑиализиÑованнÑй ÑинÑакÑÐ¸Ñ ÐºÐ¾Ð¼Ð¼ÐµÐ½ÑаÑиев, Ñебанг комменÑаÑий, в пÑоÑеÑÑе ÑÑандаÑÑизаÑии в ECMAScript (ÑмоÑÑеÑÑ Hashbang Grammar proposal).
Шебанг комменÑаÑий ведÑÑ ÑÐµÐ±Ñ ÑоÑно Ñакже как и одноÑÑÑоÑнÑй (//) комменÑаÑий. ÐмеÑÑо ÑÑого, он наÑинаеÑÑÑ Ñ #! и дейÑÑвиÑелен ÑолÑко в Ñамом наÑале ÑкÑипÑа или модÑлÑ. ÐбÑаÑиÑе внимание, ÑÑо никакие пÑÐ¾Ð±ÐµÐ»Ñ Ð½Ðµ ÑазÑеÑÐµÐ½Ñ Ð¿ÐµÑед #!. ÐомменÑаÑий ÑоÑÑÐ¾Ð¸Ñ Ð¸Ð· вÑеÑ
Ñимволов поÑле #! до конÑа пеÑвой ÑÑÑоки; ÑолÑко Ñакой комменÑаÑий ÑазÑеÑÑн.
Шебанг комменÑаÑий опÑеделÑÐµÑ Ð¿ÑÑÑ Ðº JavaScript инÑеÑпÑеÑаÑоÑÑ, ÑкÑÐ¸Ð¿Ñ ÐºÐ¾ÑоÑого Ð²Ñ Ñ Ð¾ÑиÑе вÑполниÑÑ. ÐÑимеÑ, как ÑÑо ÑабоÑаеÑ:
#!/usr/bin/env node
console.log("Hello world");
ÐÑимеÑание: Hashbang comments in JavaScript mimic shebangs in Unix used to run files with proper interpreter.
ÐÑедÑпÑеждение: Although BOM before hashbang comment will work in a browser it is not advised to use BOM in a script with hasbang. BOM will not work when you try to run the script in Unix/Linux. So use UTF-8 without BOM if you want to run scripts directly from shell.
ÐÐ»Ñ Ð¾Ð¿ÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ JavaScript инÑеÑпÑеÑаÑоÑа иÑполÑзÑйÑе ÑолÑко #! . РлÑбÑÑ
дÑÑгиÑ
ÑлÑÑаÑÑ
иÑполÑзÑйÑе // (или многоÑÑÑоÑнÑй комменÑаÑий).
ÐлÑÑевÑе Ñлова
>ÐаÑезеÑвиÑованнÑе клÑÑевÑе Ñлова в ECMAScript 2015
ÐлÑÑевÑе Ñлова, заÑезеÑвиÑованнÑе на бÑдÑÑее
СледÑÑÑие клÑÑевÑе Ñлова заÑезеÑвиÑÐ¾Ð²Ð°Ð½Ñ Ð½Ð° бÑдÑÑее ECMAScript ÑпеÑиÑикаÑией. Ðа ними ÑейÑÐ°Ñ Ð½Ðµ ÑÑÐ¾Ð¸Ñ Ð½Ð¸ÐºÐ°ÐºÐ¾Ð¹ ÑÑнкÑионалÑноÑÑи, но она Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾ÑвиÑÑÑÑ Ð² бÑдÑÑÐ¸Ñ Ð²ÐµÑÑиÑÑ , поÑÑÐ¾Ð¼Ñ ÑÑи клÑÑевÑе Ñлова не могÑÑ Ð±ÑÑÑ Ð¸ÑполÑзованÑ, как иденÑиÑикаÑоÑÑ. ÐÑи клÑÑевÑе Ñлова не могÑÑ Ð±ÑÑÑ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ñ Ð´Ð°Ð¶Ðµ в strict или non-strict ÑÐµÐ¶Ð¸Ð¼Ð°Ñ .
enumawait
СледÑÑÑие клÑÑевÑе Ñлова заÑезеÑвиÑÐ¾Ð²Ð°Ð½Ñ Ð´Ð»Ñ ÐºÐ¾Ð´Ð°, коÑоÑÑй вÑполнÑеÑÑÑ Ð² strict Ñежиме:
implementspackageprotectedstaticinterfaceprivatepublic
ÐаÑезеÑвиÑованнÑе клÑÑевÑе Ñлова в более ÑÑаÑÑÑ Ð²ÐµÑÑиÑÑ
ÐеÑеÑиÑленнÑе ниже клÑÑевÑе Ñлова заÑезеÑвиÑÐ¾Ð²Ð°Ð½Ñ Ð´Ð»Ñ ÑÑаÑÑÑ Ð²ÐµÑÑий ECMAScript ÑпеÑиÑикаÑий (ECMAScript Ð¾Ñ 1 по 3).
abstractbooleanbytechardoublefinalfloatgotointlongnativeshortsynchronizedtransientvolatile
Ð ÑÐ¾Ð¼Ñ Ð¶Ðµ, лиÑеÑÐ°Ð»Ñ null, true, и false заÑезеÑвиÑÐ¾Ð²Ð°Ð½Ñ Ð² ECMAScript Ð´Ð»Ñ Ð¸Ñ
обÑÑной ÑÑнкÑионалÑноÑÑи.
ÐÑполÑзование заÑезеÑвиÑованнÑÑ Ñлов
ÐаÑезеÑвиÑованнÑе Ñлова дейÑÑвиÑелÑно пÑименÑÑÑÑÑ ÑолÑко к иденÑиÑикаÑоÑам (vs. IdentifierNames). Ðак опиÑано в es5.github.com/#A.1, ÑÑо вÑе имена IdentifierNames, коÑоÑÑе не иÑклÑÑаÑÑ Ð·Ð°ÑезеÑвиÑованнÑÑ Ñлов.
a.import
a["import"]
a = { import: "test" }.
С дÑÑгой ÑÑоÑонÑ, ÑледÑÑÑее вÑÑажение непÑавилÑно, Ñ.к. ÐденÑиÑикаÑÐ¾Ñ IdentifierName не ÑодеÑÐ¶Ð¸Ñ Ð·Ð°ÑезеÑвиÑованнÑÑ
Ñлов. ÐденÑиÑикаÑоÑÑ Ð¸ÑполÑзÑÑÑÑÑ Ð´Ð»Ñ FunctionDeclaration, FunctionExpression, VariableDeclaration и Ñ.п., в Ñо вÑемÑ, как IdentifierNames иÑполÑзÑÑÑÑÑ Ð´Ð»Ñ MemberExpression, CallExpression и Ñ.п.
function import() {} // непÑавилÑно.
ÐиÑеÑалÑ
>ÐиÑеÑал Null
ÐодÑобнее о .nullnull
null;
ÐиÑеÑал Boolean
ÐодÑобнее о .Boolean
true;
false;
ÐиÑеÑÐ°Ð»Ñ ÑиÑел
Decimal (деÑÑÑиÑнÑе ÑиÑла)
1234567890;
42;
// ÐÑдÑÑе оÑÑоÑÐ¾Ð¶Ð½Ñ Ñ Ð¸ÑполÑзованием нÑÐ»Ñ Ð²Ð½Ð°Ñале ÑиÑла:
0888; // 888 ÑаÑпознаеÑÑÑ, как деÑÑÑиÑное ÑиÑло
0777; // ÑаÑпознаеÑÑÑ, как воÑÑмеÑиÑное ÑиÑло, 511 - как деÑÑÑиÑное ÑиÑло
ÐмейÑе в видÑ, ÑÑо лиÑеÑÐ°Ð»Ñ Ð´ÐµÑÑÑиÑнÑÑ
ÑиÑел могÑÑ Ð½Ð°ÑинаÑÑÑÑ Ñ Ð½ÑÐ»Ñ (0), за коÑоÑÑм ÑледÑÐµÑ Ð´ÑÑгое деÑÑÑиÑное ÑиÑло, но в ÑлÑÑае, еÑли ÑиÑло наÑинаеÑÑÑ Ñ Ð½ÑÐ»Ñ Ð¸ за ним идÑÑ ÑиÑÑа менÑÑе 8, Ñо ÑиÑло бÑÐ´ÐµÑ ÑаÑпознано как воÑÑмеÑиÑное. This won't throw in JavaScript, see Firefox bug 957513. See also the page about .parseInt()
Binary (двоиÑнÑе ÑиÑла)
СинÑакÑÐ¸Ñ Ð´Ð²Ð¾Ð¸ÑнÑÑ
ÑиÑел ÑоÑÑÐ¾Ð¸Ñ Ð¸Ð· ÑиÑÑÑ Ð½Ð¾Ð»Ñ, за коÑоÑой ÑледÑÐµÑ Ð¼Ð°Ð»ÐµÐ½ÑÐºÐ°Ñ Ð¸Ð»Ð¸ болÑÑÐ°Ñ Ð»Ð°ÑинÑÐºÐ°Ñ Ð±Ñква "B" (0b или 0B). ÐÑÐ¾Ñ ÑинÑакÑÐ¸Ñ Ð½Ð¾Ð²Ñй и поÑвилÑÑ ÑолÑко в ECMAScript 2015, пожалÑйÑÑа поÑмоÑÑиÑе ÑаблиÑÑ ÑовмеÑÑимоÑÑи Ñ Ð±ÑаÑзеÑами. ÐÑо Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑоизводиÑÑ Ð¾ÑÐ¸Ð±ÐºÑ : "Missing binary digits after 0b", ÐÑли ÑиÑÑÑ Ð½Ðµ 0 или 1.SyntaxError
var FLT_SIGNBIT = 0b10000000000000000000000000000000; // 2147483648
var FLT_EXPONENT = 0b01111111100000000000000000000000; // 2139095040
var FLT_MANTISSA = 0b00000000011111111111111111111111; // 8388607
Octal (воÑÑмеÑиÑнÑе ÑиÑла)
ÐоÑÑмеÑиÑнÑй ÑиÑловой ÑинÑакÑиÑ, коÑоÑÑй иÑполÑзÑÐµÑ 0 Ñ Ð¿Ð¾ÑледÑÑÑей, в нижнем или веÑÑ
нем ÑегиÑÑÑе, лаÑинÑкÑÑ Ð±ÑÐºÐ²Ñ "Ð" (0o или 0O). ÐÑÐ¾Ñ ÑинÑакÑÐ¸Ñ Ð¿Ð¾ÑвилÑÑ Ð² ECMAScript 2015, пожалÑйÑÑа, поÑмоÑÑиÑе ÑаблиÑÑ ÑовмеÑÑимоÑÑи Ñ Ð±ÑаÑзеÑами. ÐÑо Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑоизводиÑÑ Ð¾ÑÐ¸Ð±ÐºÑ SyntaxError: "Missing octal digits after 0o", еÑли ÑиÑÑÑ Ð½Ðµ Ð¼ÐµÐ¶Ð´Ñ 0 и 7.
var n = 0o755; // 493
var m = 0o644; // 420
// Так же возможно Ñ Ð»Ð¸Ð´Ð¸ÑÑÑÑими нÑлÑми (Ñм. замеÑÐºÑ Ð¾ деÑÑÑиÑнÑÑ
дÑобÑÑ
вÑÑе)
0755;
0644;
Hexadecimal (ÑеÑÑнадÑаÑеÑиÑнÑе ÑиÑла)
ШеÑÑнадÑаÑеÑиÑнÑй ÑиÑловой ÑинÑакÑиÑ, коÑоÑÑй иÑполÑзÑÐµÑ 0 Ñ Ð¿Ð¾ÑледÑÑÑей, в нижнем или веÑÑ
нем ÑегиÑÑÑе, лаÑинÑкÑÑ Ð±ÑÐºÐ²Ñ "X" (0x или 0X). ÐÑли ÑиÑла поÑле 0x вне диапазона (0123456789ABCDEF), Ñо Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾ÑледоваÑÑ Ð·Ð° ÑÑим SyntaxError: "Identifier starts immediately after numeric literal".
0xfffffffffffffffff; // 295147905179352830000
0x123456789abcdef; // 81985529216486900
0xa; // 10
ÐиÑеÑал Object (ÐбÑекÑ)
СмоÑÑиÑе Ñакже Object и Object initializer Ð´Ð»Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ Ð±Ð¾Ð»ÐµÐµ подÑобной инÑоÑмаÑии.
var o = { a: "foo", b: "bar", c: 42 };
// ÑокÑаÑÑÐ½Ð½Ð°Ñ Ð½Ð¾ÑаÑиÑ. ÐоÑвилаÑÑ Ð² ES2015
var a = "foo",
b = "bar",
c = 42;
var o = { a, b, c };
// вмеÑÑо
var o = { a: a, b: b, c: c };
ÐиÑеÑал Array (ÐаÑÑив)
СмоÑÑиÑе Ñакже Array Ð´Ð»Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ Ð±Ð¾Ð»ÐµÐµ подÑобной инÑоÑмаÑии.
[1954, 1974, 1990, 2014];
ÐиÑеÑал String (СÑÑока)
'foo';
"bar";
ÐкÑаниÑование ÑеÑÑнадÑаÑеÑиÑной поÑледоваÑелÑноÑÑи
"\xA9"; // "©"
ÐкÑаниÑование Юникод Ñимволов
ÐÐ»Ñ ÑкÑаниÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð®Ð½Ð¸ÐºÐ¾Ð´ Ñимволов обÑзаÑелÑно нÑжно ÑказаÑÑ Ð¿Ð¾ кÑайней меÑе 4 Ñимвола поÑле \u.
"\u00A9"; // "©"
Unicode code point escapes
Ðовое в ECMAScript 2015. With Unicode code point escapes, any character can be escaped using hexadecimal numbers so that it is possible to use Unicode code points up to 0x10FFFF. With simple Unicode escapes it is often necessary to write the surrogate halves separately to achieve the same.
See also String.fromCodePoint() or String.prototype.codePointAt().
"\u{2F804}";
// the same with simple Unicode escapes
"\uD87E\uDC04";
ÐиÑеÑал РегÑлÑÑного вÑÑажениÑ
СмоÑÑиÑе Ñакже Ð´Ð»Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ Ð±Ð¾Ð»ÐµÐµ подÑобной инÑоÑмаÑии.RegExp
/ab+c/g
// An "empty" regular expression literal
// The empty non-capturing group is necessary
// to avoid ambiguity with single-line comments.
/(?:)/
ÐиÑеÑал Шаблона
СмоÑÑиÑе Ñакже template strings Ð´Ð»Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ Ð±Ð¾Ð»ÐµÐµ подÑобной инÑоÑмаÑии.
`string text`;
`string text line 1
string text line 2`;
`string text ${expression} string text`;
tag`string text ${expression} string text`;
ÐвÑомаÑиÑеÑÐºÐ°Ñ Ð²ÑÑавка "ÑоÑки Ñ Ð·Ð°Ð¿ÑÑой"
ÐекоÑоÑÑе JavaScript ÑÑÐ»Ð¾Ð²Ð¸Ñ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð·Ð°Ð²ÐµÑÑÐµÐ½Ñ ÑоÑкой Ñ Ð·Ð°Ð¿ÑÑой и поÑÑÐ¾Ð¼Ñ Ð½Ð° ниÑ
влиÑÐµÑ Ð°Ð²ÑомаÑиÑеÑÐºÐ°Ñ Ð²ÑÑавка ÑоÑки Ñ Ð·Ð°Ð¿ÑÑой (ASI):
- ÐÑÑÑое ÑÑловие
let,const, пеÑеменнÑеimport,export, обÑÑвление модÑлей- ÐпеÑаÑоÑ-вÑÑажение
debuggercontinue,break,throwreturn
1. ТоÑка Ñ Ð·Ð°Ð¿ÑÑой ÑÑавиÑÑÑ Ð´Ð¾, когда огÑаниÑиÑÐµÐ»Ñ ÑÑÑоки или "}" is encountered that is not allowed by the grammar.
{ 1 2 } 3
// ÑоглаÑно ASI, бÑÐ´ÐµÑ Ð¿ÑеобÑазовано в
{ 1 2 ;} 3;
2. ТоÑка Ñ Ð·Ð°Ð¿ÑÑой ÑÑавиÑÑÑ Ð² конÑе, когда обнаÑÑжен ÐºÐ¾Ð½ÐµÑ Ð²Ð²Ð¾Ð´Ð¸Ð¼Ð¾Ð¹ ÑÑÑоки Ñокенов и паÑÑÐµÑ is unable to parse the single input stream as a complete program.
Here ++ is not treated as a postfix operator applying to variable b, because a line terminator occurs between b and ++.
a = b
++c
// ÑоглаÑно ASI, бÑÐ´ÐµÑ Ð¿ÑеобÑазовано в
a = b;
++c;
3. ТоÑка Ñ Ð·Ð°Ð¿ÑÑой вÑÑавлÑеÑÑÑ Ð² конÑе, когда ÑоглаÑно инÑÑÑÑкÑии Ñ Ð¾Ð³ÑаниÑеннÑм пÑоизводÑÑвом в гÑаммаÑике ÑледÑÐµÑ Ð¾Ð³ÑаниÑиÑÐµÐ»Ñ ÑÑÑоки. ÐÑи ÑÑвеÑÐ¶Ð´ÐµÐ½Ð¸Ñ Ñ Ð¿Ñавилами «no LineTerminator here» здеÑÑ:
- PostfixExpressions (
++and--) continuebreakreturnyield,yield*module
return
a + b
// ÑоглаÑно ASI, бÑÐ´ÐµÑ Ð¿ÑеобÑазовано в
return;
a + b;
СпеÑиÑикаÑии
| Specification |
|---|
| ECMAScript® 2027 Language Specification> |
СовмеÑÑимоÑÑÑ Ñ Ð±ÑаÑзеÑами
ÐÑобенноÑÑи Firefox
- Prior to Firefox 5 (JavaScript 1.8.6), future reserved keywords could be used when not in strict mode. This ECMAScript violation was fixed in Firefox 5.