рдЬреЗрдПрд╕ рдорд╛рдирдХреАрдХрд░рдг рдиреЗ рдПрдХ рд╡рд░реНрд╖ рдХреЗ рдЕрджреНрдпрддрди рдЪрдХреНрд░ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ рд╡рд░реНрд╖ рдХреА рд╢реБрд░реБрдЖрдд рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╢рд╛рдирджрд╛рд░ рд╕рдордп рд╣реИ рдХрд┐ рд╡рд░реНрд╖рдЧрд╛рдВрда рдореЗрдВ рд╣рдореЗрдВ рдХреНрдпрд╛ рдЗрдВрддрдЬрд╛рд░ рд╣реИ - рдПрдХреНрдорд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рджрд╕рд╡рд╛рдВ рд╕рдВрд╕реНрдХрд░рдг!
рдИрдПрд╕ 9 рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рд╣реИ ред
ES 10 рдЕрднреА рднреА рдПрдХ рдорд╕реМрджрд╛ рд╣реИ ред
рдЖрдЬ рддрдХ, рд╕реНрдЯреЗрдЬ 4 # рдореЗрдВ рдХреБрдЫ рд╕реБрдЭрд╛рд╡ рд╣реИрдВред
рдФрд░ рд╕реНрдЯреЗрдЬ 3 рдореЗрдВ - рдПрдХ рдкреВрд░реЗ рджрд░реНрдЬрди!
рдЗрдирдореЗрдВ рд╕реЗ, рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рд╡рд░реНрдЧ рдХреЗ рдирд┐рдЬреА рдХреНрд╖реЗрддреНрд░ рд╣реИрдВ # , рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╢реЗрдмрдВрдЧ рд╡реНрдпрд╛рдХрд░рдг # , рдордирдорд╛рдиреА рдкрд░рд┐рд╢реБрджреНрдзрддрд╛ рдХреА рд╕рдВрдЦреНрдпрд╛ # , рд╡реИрд╢реНрд╡рд┐рдХ рд╕рдВрджрд░реНрдн рддрдХ рдкрд╣реБрдВрдЪ # рдФрд░ рдЧрддрд┐рд╢реАрд▓ рдЖрдпрд╛рдд # ред

рдлрд╝реЛрдЯреЛ рджреНрд╡рд╛рд░рд╛: kasper.green; рдкреАрд▓рд╛ рдЪреБрдВрдмрдХ: elfafeya.art рдФрд░ kasper.green
рд╕рд╛рдордЧреНрд░реА
тАв catch
- рддрд░реНрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реЛ рдЧрдпрд╛ рд╣реИ # ;
тАв Symbol().description
- рдкреНрд░рддреАрдХ # рдХреЗ рд╡рд░реНрдгрди рдХреЗ рд▓рд┐рдП рдЕрднрд┐рдЧрдордХрд░реНрддрд╛ ;
тАв ' EcmaScript'
- JSON рдкреНрд░рд╛рд░реВрдк # рдХреЗ рд╕рд╛рде рдмреЗрд╣рддрд░ рд╕рдВрдЧрддрддрд╛ ;
тАв .toString()
- рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╡рд┐рдзрд┐ # рдЕрдкрдбреЗрдЯ рдХреА рдЧрдИ ред
тАв Object.fromEntries()
- рдЬреЛрдбрд╝реЗ рдХреА рдПрдХ рд╕рд░рдгреА рд╕реЗ рдПрдХ рд╡рд╕реНрддреБ рдмрдирд╛рдирд╛ - рдХреБрдВрдЬреА \ рдореВрд▓реНрдп # ;
тАв .flat()
рдФрд░ .flatMap()
рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк # рд╕рд░рдгреА рд╡рд┐рдзрд┐рдпрд╛рдВ рд╣реИрдВ ред
┬╖ - рдСрдХреНрдЯреЛрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рд╕рдм рдХреБрдЫ рдирд┐рдЬреА рд╣реИ ;
тАв #!/usr/bin/env node
- рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╛рдХрд░рдг рд╡реНрдпрд╛рдХрд░рдг # ;
тАв BigInt()
- рдПрдХ рдирдпрд╛ рдЖрджрд┐рдо, рдордирдорд╛рдирд╛ рд╕рдЯреАрдХ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП # ;
тАв globalThis
- рд╡реИрд╢реНрд╡рд┐рдХ рд╕рдВрджрд░реНрдн рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдирдпрд╛ рддрд░реАрдХрд╛ # ;
тАв import(dynamic)
- рдЧрддрд┐рд╢реАрд▓ рдЖрдпрд╛рдд # ;
тАв import.meta
- рд▓реЛрдб рдХрд┐рдП рдЧрдП рдореЙрдбреНрдпреВрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореЗрдЯрд╛ рдЬрд╛рдирдХрд╛рд░реА # ;
тАв JSON.stringify()
- # рд╡рд┐рдзрд┐ рдХрд╛ рдлрд┐рдХреНрд╕ ;
тАв RegExp
- рдкрджрд╛рд╡рдирдд рд╕реБрд╡рд┐рдзрд╛рдПрдБ # ;
тАв .trimStart()
рдФрд░ .trimEnd()
- рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╡рд┐рдзрд┐рдпрд╛рдБ # ;
тАв .matchAll()
- .match()
рдЧреНрд▓реЛрдмрд▓ рдлреНрд▓реИрдЧ # рдХреЗ рд╕рд╛рде ;
рдкрд╛рдБрдЪ рдЕрд╡рд╕реНрдерд╛рдПрдБ
рд╕реНрдЯреЗрдЬ 0 be рд╕реНрдЯреНрд░реЙрдорди рдмрд╕реНрдЯрд┐рдВрдЧ рдПрдХ рдРрд╕рд╛ рд╡рд┐рдЪрд╛рд░ рдЬрд┐рд╕реЗ рдмреИрдмрд▓- рдкреНрд▓рдЧрдЗрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ;
рдЪрд░рдг 1 1 рд╡рд┐рдЪрд╛рд░ рд╡реНрдпрд╡рд╣рд╛рд░реНрдпрддрд╛ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдкреНрд░рд╕реНрддрд╛рд╡ рд╕рддреНрдпрд╛рдкрди ред;
рдЪрд░рдг 2 specification рд╡рд┐рдирд┐рд░реНрджреЗрд╢рди рд╡рд┐рдХрд╛рд╕ рдХрд╛ рдбреНрд░рд╛рдлреНрдЯ рдбреНрд░рд╛рдлрд╝реНрдЯ рдкреНрд░рд╛рд░рдВрдн ред;
рдЪрд░рдг 3 3 рдЙрдореНрдореАрджрд╡рд╛рд░ рдЙрдореНрдореАрджрд╡рд╛рд░ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛;
рдЪрд░рдг 4 ╓Н рд╕рдорд╛рдкреНрдд рдЗрд╕ рд╡рд░реНрд╖ рдХреЗ рд▓рд┐рдП рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рдЕрдВрддрд┐рдо рд╕рдВрд╕реНрдХрд░рдг рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИред
рд╣рдо рдХреЗрд╡рд▓ рдЪрд░рдг 4 рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ - рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдорд╛рдирдХред
рдФрд░ рд╕реНрдЯреЗрдЬ 3 - рдЬреЛ рдЗрд╕рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдмрдирдиреЗ рд╡рд╛рд▓рд╛ рд╣реИред
╓Н рд╕реНрдЯреЗрдЬ 4
рдпреЗ рдкрд░рд┐рд╡рд░реНрддрди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдорд╛рдирдХ рд╣реИрдВред
рд╡реИрдХрд▓реНрдкрд┐рдХ рддрд░реНрдХ рдХреЛ catch
https://github.com/tc39/proposal-optional-catch-binding
рдИрдПрд╕ 10 рд╕реЗ рдкрд╣рд▓реЗ, catch
рдХреЛ рддреНрд░реБрдЯрд┐ рдЬрд╛рдирдХрд╛рд░реА рдПрдХрддреНрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд╡рд╢реНрдпрдХ рддрд░реНрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА, рднрд▓реЗ рд╣реА рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛ:
function isValidJSON(text) { try { JSON.parse(text); return true; } catch(unusedVariable) {

рдПрдЬ рдХреЛ рдЕрднреА рддрдХ ES 10 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдПрдХ рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рдХреНрд░реИрд╢ рд╣реЛрдиреЗ рдХреА рдЙрдореНрдореАрдж рд╣реИред
ES 10 рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рд╢реБрд░реВ, рдХреЛрд╖реНрдардХ рдЫреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ catch
рдХреА try
рддрд░рд╣ рдкрд╛рдиреА рдХреА рджреЛ рдмреВрдВрджреЛрдВ рдХреА рддрд░рд╣ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

рдореЗрд░рд╛ Chrome рдкрд╣рд▓реЗ рд╣реА ES 10 рдФрд░ рдХреБрдЫ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рд╕реНрдЯреЗрдЬ 3 рдореЗрдВ рдЕрдкрдбреЗрдЯ рд╣реЛ рдЪреБрдХрд╛ рд╣реИред рдЖрдЧреЗ рдХреЗ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдХреНрд░реЛрдо рд╕реЗ рд╣реЛрдВрдЧреЗ
рд╕реНрд░реЛрдд рдХреЛрдб function isValidJSON(text) { try { JSON.parse(text); return true; } catch {
рдПрдХреНрд╕реЗрд╕ рдкреНрд░рддреАрдХрд╛рддреНрдордХ рд▓рд┐рдВрдХ рд╡рд┐рд╡рд░рдг
https://tc39.imtqy.com/proposal-Symbol-description/
рдПрдХ рдкреНрд░рддреАрдХрд╛рддреНрдордХ рд▓рд┐рдВрдХ рд╡рд┐рд╡рд░рдг рдХреЛ рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рд░реВрдк рд╕реЗ (ред) рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
const symbol_link = Symbol("Symbol description") String(symbol_link)
рдИрдПрд╕ 10 рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рд╡рд░реНрдгреЛрдВ рдореЗрдВ рдПрдХ рд╡рд┐рд╡рд░рдг рд╕рдВрдкрддреНрддрд┐ рд╣реЛрддреА рд╣реИ рдЬреЛ рдХреЗрд╡рд▓ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЛрддреА рд╣реИред рдпрд╣ рдЖрдкрдХреЛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдиреГрддреНрдп рдХреЗ рдкреНрд░рддреАрдХ рдХреЗ рд╡рд┐рд╡рд░рдг рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:
symbol_link.description
рдпрджрд┐ рд╡рд┐рд╡рд░рдг рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, рддреЛ рдпрд╣ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧрд╛ - undefined
:
const without_description_symbol_link = Symbol() without_description_symbol_link.description
EcmaScript рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ JSON рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд
https://github.com/tc39/proposal-json-superset
EcmaScript, рдЕрдкрдиреЗ рджрд╕рд╡реЗрдВ рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рдкрд╣рд▓реЗ, рджрд╛рд╡рд╛ рдХрд░рддрд╛ рд╣реИ рдХрд┐ JSON JSON.parse
рд╕рдмрд╕реЗрдЯ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдЪ рдирд╣реАрдВ рд╣реИред
JSON рд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ рдмрд┐рдирд╛ рддрд╛рд░ рд╡рд╛рд▓реА рд▓рд╛рдЗрди рд╕реЗрдкрд░реЗрдЯрд░ U+2028
LINE SEPARATOR рдФрд░ рдкреИрд░рд╛рдЧреНрд░рд╛рдл U+2029
PARAGRAPH SEPARATOR рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ ред
ECMAScript рдХреА рджрд╕рд╡реАрдВ рд╕рдВрд╕реНрдХрд░рдг рддрдХ рдкрдВрдХреНрддрд┐рдпрд╛рдБ - рдирд╣реАрдВред
рдпрджрд┐ рдЖрдк рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рд╕реНрдЯреНрд░рд┐рдВрдЧ "\u2029"
eval()
"\u2029"
,
рдпрд╣ рдРрд╕рд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИ рдорд╛рдиреЛ рд╣рдордиреЗ рдПрдХ рд▓рд╛рдЗрди рдмреНрд░реЗрдХ рдХрд┐рдпрд╛ рд╣реЛ - рдХреЛрдб рдХреЗ рдареАрдХ рдмреАрдЪ рдореЗрдВ:

ES 10 рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд╕рд╛рде - рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИ:

рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХрд╛ рд╢реЛрдзрди .toString()
рд╡рд┐рдзрд┐
http://tc39.imtqy.com/Function-prototype-toString-revision/
рд▓рдХреНрд╖реНрдп рдмрджрд▓реЗрдВ- рдкрд┐рдЫрдбрд╝реА рдЕрд╕рдВрдЧрдд рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рджреВрд░ рдХрд░реЗрдВ:
рдпрджрд┐ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдПрдХ рд╕реНрд░реЛрдд рдХреЛрдб рд╕реНрдЯреНрд░рд┐рдВрдЧ рдирд╣реАрдВ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЗрди рдорд╛рдирджрдВрдбреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЙрд╕реЗ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП eval рдПрдХ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рдПрдХ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХ рджреЗрдЧрд╛ред
рдПрдХ "рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рд╕рдордХрдХреНрд╖" рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░реЗрдВ;
рдирд┐рд░реНрдорд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдФрд░ рдореЗрдЬрдмрд╛рди рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреЛ рдорд╛рдирдХреАрдХреГрдд рдХрд░реЗрдВ;
рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреА "рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ" рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкреНрд░рд╕реНрддреБрддрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░рдирд╛;
рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдореЗрдВ рдореВрд▓ рд░реВрдк рдореЗрдВ рдПрдХ рд╣реА рдлрд╝рдВрдХреНрд╢рди рдмреЙрдбреА рдФрд░ рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рд╕реВрдЪреА рд╣реИ;
ECMAScript рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдП рдЧрдП рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, toString рдХреЛ рдкрд╣рд▓реЗ рдХреЗ рдЯреЛрдХрди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдЯреЛрдХрди рдХреЗ рд╕рдорддреБрд▓реНрдп рд╡реНрдпрд╛рдХрд░рдгрд┐рдХ рдирд┐рд░реНрдорд╛рдг рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕реНрд░реЛрдд рдХреЗ рдкрд╛рда рдХрд╛ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рд▓реМрдЯрдирд╛ рдЪрд╛рд╣рд┐рдП;
рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП, рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдХреБрдЫ рднреА рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдореВрд▓ рдирд┐рд╡рд╛рд╕реА;
ECMAScript рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдЬрд┐рди рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЙрдирдХреЗ рд▓рд┐рдП NativeFunction рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛;
рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдмрдирд╛рдП рдЧрдП рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЗ рд▓рд┐рдП (рдлрд╝рдВрдХреНрд╢рди рдпрд╛ рдЬрдирд░реЗрдЯрд░ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░) рдХреЛ рд╕реНрд░реЛрдд рдкрд╛рда рдХреЛ рд╕рдВрд╢реНрд▓реЗрд╖рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП;
рдЕрдиреНрдп рд╕рднреА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП, toString рдХреЛ TypeError рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХрдирд╛ рдЪрд╛рд╣рд┐рдПред
Object.fromEntries()
рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдирд╛
https://github.com/tc39/proposal-object-from-entries
рдХреНрд░реЛрдо рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
_.fromPairs
рд╕реЗ lodash
рдХрд╛ рдПрдирд╛рд▓реЙрдЧ:
Object.fromEntries([['key_1', 1], ['key_2', 2]])
.flat()
рдФрд░ .flatMap()
рд╕рд╛рде рдПрдХ рдЖрдпрд╛рдореА рд╕рд░рдгрд┐рдпрд╛рдБ
https://github.com/tc39/proposal-flatMap
рдХреНрд░реЛрдо рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
рд╕рд░рдгреА рдиреЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХрд╛ рдЕрдзрд┐рдЧреНрд░рд╣рдг рдХрд┐рдпрд╛ .flat()
рдФрд░ .flatMap()
, рдЬреЛ рдЖрдо рддреМрд░ рдкрд░ рджрд░реНрдЬ рдХрд┐рдП рдЧрдП рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рдорд╛рди рд╣реИрдВ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдХреБрдЫ рдЕрдВрддрд░ рд╣реИрдВред рд╡реИрдХрд▓реНрдкрд┐рдХ рддрд░реНрдХ - рдЕрдзрд┐рдХрддрдо рдкреЗрдбрд╝ рдХреА рдЧрд╣рд░рд╛рдИ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ:
const deep_deep_array = [ 'тЙе0 тАФ ', [ 'тЙе1 тАФ ', [ 'тЙе2 тАФ ', [ 'тЙе3 тАФ ', [ 'тЙе4 тАФ ' ] ] ] ] ]
.flatMap()
рд▓рдЧрд╛рддрд╛рд░ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд░рд╛рдмрд░ .flatMap()
.map().flat()
ред рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╡рд┐рдзрд┐ рдореЗрдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рдПрдХ рд╕рд░рдгреА рд▓реМрдЯрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдлреНрд▓реИрдЯ рд╕рд░рдгреА рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдмрди рдЬрд╛рдПрдЧрд╛:
['Hello', 'World'].flatMap(word => [...word])
рдХреЗрд╡рд▓ .flat()
рдФрд░ .flat()
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЙрджрд╛рд╣рд░рдг рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
['Hello', 'World'].map(word => [...word]).flat()
рдпрд╣ рднреА рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ .flatMap()
, .flatMap()
рдХреЗ рд╡рд┐рдкрд░реАрдд .flat()
рдХреНрд░реЙрд▓ рдЧрд╣рд░рд╛рдИ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдирд╣реАрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП рдХреЗрд╡рд▓ рдкрд╣рд▓реЗ рд╕реНрддрд░ рдкрд░ рд╣реА рдирдЬрд░ рд░рдЦреА рдЬрд╛рдПрдЧреАред
╓Н рд╕реНрдЯреЗрдЬ 3
рдкреНрд░рд╕реНрддрд╛рд╡ рдЬреЛ рдорд╕реМрджрд╛ рдХреА рд╕реНрдерд┐рддрд┐ рд╕реЗ рдЙрднрд░рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ рдорд╛рдирдХ рдХреЗ рдЕрдВрддрд┐рдо рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред
рдирд┐рдЬреА \ рд╕реНрдерд┐рд░ \ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рддрд░реАрдХреЗ \ рдЧреБрдг \ рдЧреБрдг рд╡рд░реНрдЧреЛрдВ рдХреА
https://github.com/tc39/proposal-class-fields
https://github.com/tc39/proposal-private-methods
https://github.com/tc39/proposal-static-class-features
рдХреБрдЫ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдПрдХ рджреГрд╢реНрдп рд╕реНрдерд╛рди рдХреЗ рд╕рд╛рде рдирд┐рдЬреА рддрд░реАрдХреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╕рдордЭреМрддрд╛ рд╣реИ (" _ " - рдЗрд╕ рддрд░рд╣ рдХрд╛ рдПрдХ рдЯреБрдХрдбрд╝рд╛, рдЖрдк рдЗрд╕ рдирд╛рдо рдХреЛ рдЧрд▓рдд рдирд╛рдо рдХреЗ рдиреАрдЪреЗ рдЬрд╛рди рд╕рдХрддреЗ рд╣реИрдВ - рдЕрдВрдбрд░рд╕реНрдХреЛрд░) ред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣:
<?php class AdultContent { private $_age = 0; private $_content = 'тАжis dummy example content (тАв)(тАв) тАФ3 (.)(.) only for adultsтАж'; function __construct($age) { $this->_age = $age; } function __get($name) { if($name === 'content') { return " (age: ".$this->_age.") тЖТ ".$this->_getContent()."\r\n"; } else { return 'without info'; } } private function _getContent() { if($this->_contentIsAllowed()) { return $this->_content; } return 'Sorry. Content not for you.'; } private function _contentIsAllowed() { return $this->_age >= 18; } function __toString() { return $this->content; } } echo "<pre>"; echo strval(new AdultContent(10));
рдореБрдЭреЗ рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛рдирд╛ рд╣реИ - рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рд╕рдордЭреМрддрд╛ рд╣реИред рдЕрдиреНрдп рдЙрдкрд╕рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдЕрд▓рдЧ рдЙрдкрд╕рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ, рдпрд╛ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдиреЗ рд╕реЗ рдХреБрдЫ рднреА рдирд╣реАрдВ рд░реЛрдХрддрд╛ рд╣реИред
рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдореИрдВ this
рд▓реМрдЯрд╛рдиреЗ рд╡рд╛рд▓реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрд╕рд░реНрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рджреГрд╢реНрдп рд╕реНрдерд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд╡рд┐рдЪрд╛рд░ рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реВрдВред рдЗрд╕рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдХреЙрд▓ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
EcmaScript рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рдЖрдЧреЗ рдмрдврд╝рдХрд░ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрд╕рд░реНрдЧ- рдСрдХреНрдЯреЛрдЯрд░рдк (" # " -рд▓реЙрдЯрд┐рд╕, рд╣реИрд╢) рдмрдирд╛рдпрд╛ ред
ES 10 рдкрд░ рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
export default class AdultContent {
рдирд┐рдЬреА рдЧреБрдгреЛрдВ, рд╡рд┐рдзрд┐рдпреЛрдВ рдФрд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдПрдХ рд╕рд╛рде рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдг рдХреЛ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рдЬрдЯрд┐рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, JS - PHP рд╕рдВрд╕реНрдХрд░рдг рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдкрдиреА рд╕рдВрдХреНрд╖рд┐рдкреНрддрддрд╛ рдХреЗ рд╕рд╛рде рдЖрдВрдЦ рдХреЛ рдкреНрд░рд╕рдиреНрди рдХрд░рддрд╛ рд╣реИред рдХреЛрдИ рдирд┐рдЬреА рдлрд╝рдВрдХреНрд╢рди _... рдЖрдкрдХреЗ рд▓рд┐рдП, рдкрдВрдХреНрддрд┐ рдХреЗ рдЕрдВрдд рдореЗрдВ рдХреЛрдИ рдЕрд░реНрдзрд╡рд┐рд░рд╛рдо рдирд╣реАрдВ рд╣реИ, рдФрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдЧрд╣рд░рд╛рдИ рддрдХ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП "->" рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдмрд┐рдВрджреБред
рдирд╛рдо рд░рдЦрдиреЗ рд╡рд╛рд▓реЗред рдЧрддрд┐рд╢реАрд▓ рдирд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП, рдкреНрд░реЙрдХреНрд╕реА рдСрдмреНрдЬреЗрдХреНрдЯред
рдпрд╣ trifles рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди JS рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, PHP рдореЗрдВ рд▓реМрдЯрдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ рдХрдо рдФрд░ рдХрдо рд╣реЛрддреА рд╣реИред
рд╡реИрд╕реЗ, рдирд┐рдЬреА рдПрдХреНрд╕реЗрд╕рд░реНрд╕ рдХреЗрд╡рд▓ рдмреЗрдмрд▓ 7.3.0 рдФрд░ рдмрд╛рдж рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИрдВред
рд▓реЗрдЦрди рдХреЗ рд╕рдордп, npmjs.com рдХрд╛ рд╕рдмрд╕реЗ рд╣рд╛рд▓рд┐рдпрд╛ рд╕рдВрд╕реНрдХрд░рдг 7.2.2 рд╣реИ
рд╕реНрдЯреЗрдЬ 4 рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рджреЗрдЦ!
рд╢реЗрдмрдВрдЧ рдЧреНрд░рд╛рдорд░
https://github.com/tc39/proposal-hashbang
рд╣реИрд╢рдмреИрдВрдЧ рдПрдХ рддрд░рд╣ рд╕реЗ рдпреВрдирд┐рдХреНрд╕ рдПрдХ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рджреБрднрд╛рд╖рд┐рдпрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИ:
#!/usr/bin/env node // 'use strict'; console.log(1);
#!/usr/bin/env node // export {}; console.log(1);
SyntaxError: Invalid or unexpected token
Chrome рдПрдХ SyntaxError: Invalid or unexpected token
рдлреЗрдВрдХ рд░рд╣рд╛ рд╣реИ SyntaxError: Invalid or unexpected token
рдПрдХ рд╕рдорд╛рди SyntaxError: Invalid or unexpected token
рдкрд░ SyntaxError: Invalid or unexpected token
BigInt рдХреЗ рд╕рд╛рде рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛
https://github.com/tc39/proposal-bigint
рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрд╛ рд╕рдорд░реНрдерди рдЕрдзрд┐рдХрддрдо рдкреВрд░реНрдгрд╛рдВрдХ рдЬрд┐рд╕реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (2 1 - 1):
console.log(Number.MAX_SAFE_INTEGER)
рдмрд┐рдЧрдЖрдИрдВрдЯ рдХреЛ рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рд╕рдЯреАрдХ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдпрд╣ рдкреНрд░рдХрд╛рд░ рдХрдИ рддрд░рд╣ рд╕реЗ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
рдпрд╣ рдПрдХ рдирдпрд╛ рдЖрджрд┐рдо рдкреНрд░рдХрд╛рд░ рд╣реИ:
typeof 123;
рдЗрд╕рдХреА рддреБрд▓рдирд╛ рд╕рд╛рдзрд╛рд░рдг рд╕рдВрдЦреНрдпрд╛рдУрдВ рд╕реЗ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ:
42n === BigInt(42);
рд▓реЗрдХрд┐рди рдЧрдгрд┐рддреАрдп рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдПрдХ рдкреНрд░рдХрд╛рд░ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:
20000000000000n/20n
рдпреВрдирд░реА рдорд╛рдЗрдирд╕ рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпреВрдирд░реА рдкреНрд▓рд╕ рдПрдХ рддреНрд░реБрдЯрд┐ рджреЗрддрд╛ рд╣реИ:
-2n
globalThis
- рд╡реИрд╢реНрд╡рд┐рдХ рд╕рдВрджрд░реНрдн рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХрд╛ рдПрдХ рдирдпрд╛ рддрд░реАрдХрд╛
https://github.com/tc39/proposal-global
рдХреНрд░реЛрдо рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
рдЪреВрдВрдХрд┐ рд╡реИрд╢реНрд╡рд┐рдХ рд╕реНрдХреЛрдк рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЗрдВрдЬрди рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд░рдирд╛ рдерд╛:
var getGlobal = function () { if (typeof self !== 'undefined') { return self; } if (typeof window !== 'undefined') { return window; } if (typeof global !== 'undefined') { return global; } throw new Error('unable to locate global object'); };
рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдиреЗ рднреА рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рджреА рдХрд┐ рд╕рдм рдХреБрдЫ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред
globalThis
рд╡реИрд╢реНрд╡рд┐рдХ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рддрд░реАрдХрд╛ рд╣реИ:
рдЧрддрд┐рд╢реАрд▓ import(dynamic)
https://github.com/tc39/proposal-dynamic-import
рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрд╛ рд╕рдорд░реНрдерди рдореИрдВ рдЧрддрд┐рд╢реАрд▓ рдЖрдпрд╛рдд рдХреЗ рд╕рд╛рде рдЖрдпрд╛рдд рд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ рдЪрд░ рдЪрд╛рд╣рддрд╛ рдерд╛, рдпрд╣ рд╕рдВрднрд╡ рд╣реЛ рдЧрдпрд╛:
import(`./language-packs/${navigator.language}.js`)
рдбрд╛рдпрдирд╛рдорд┐рдХ рдЗрдореНрдкреЛрд░реНрдЯ рдПрдХ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдСрдкрд░реЗрд╢рди рд╣реИред рдПрдХ рд╡рд╛рджрд╛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдЬреЛ рдореЙрдбреНрдпреВрд▓ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рдкрд░ рд▓реМрдЯрддрд╛ рд╣реИред
рдЗрд╕рд▓рд┐рдП, рдЖрдк рдореЙрдбреНрдпреВрд▓ рд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдЬрдм рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рдЖрд╕реНрдердЧрд┐рдд:
element.addEventListener('click', async () => {
рд╕рд┐рдВрдереЗрдЯрд┐рдХ рд░реВрдк рд╕реЗ, рдпрд╣ import()
рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЙрд▓ рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдлрдВрдХреНрд╢рди.рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдпрд╣ call
рдпрд╛ apply
рдорд╛рдзреНрдпрдо рд╕реЗ call
рдореЗрдВ рд╕рдлрд▓ рдирд╣реАрдВ рд╣реЛрдЧрд╛:
import.call("example this", "argument")
https://github.com/tc39/proposal-import-meta
рдХреНрд░реЛрдо рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
рд▓реЛрдб рдХрд┐рдП рдЧрдП рдореЙрдбреНрдпреВрд▓ рдХреЗ рдХреЛрдб рдореЗрдВ, рдЙрд╕ рдкрд░ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЧрдпрд╛ред рдЕрдм рдпрд╣ рдХреЗрд╡рд▓ рд╡рд╣ рдкрддрд╛ рд╣реИ рдЬрд┐рд╕ рдкрд░ рдореЙрдбреНрдпреВрд▓ рд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:
console.log(import.meta);
JSON.stringify()
рд╡рд┐рдзрд┐ JSON.stringify()
https://github.com/tc39/proposal-well-formed-stringify
RFC 8259 рдХреА рдзрд╛рд░рд╛ 8.1 рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ JSON рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ рдмрдВрдж рдХрд┐рдП рдЧрдП рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХ рддрдВрддреНрд░ рдХреЗ рдмрд╛рд╣рд░ UTF-8 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдиреНрдХреЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдП, рд▓реЗрдХрд┐рди JSON.stringify рдЙрди рд╕реНрдЯреНрд░реЗрдВрде рдкреЙрдЗрдВрдЯреНрд╕ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ UTF-8 (рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рд╕рд░реЛрдЧреЗрдЯ рдХреЛрдб рдкреЙрдЗрдВрдЯреНрд╕) рдореЗрдВ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред U + D800 рд╕реЗ U + DFFF)
рддреЛ JSON.stringify () рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдмрд╛рдж рд▓рд╛рдЗрди \uDF06\uD834
\\udf06\\ud834
рдореЗрдВ рдмрджрд▓ рдЬрд╛рддреА рд╣реИ:
JSON.stringify('\uDF06\uD834') '"\\udf06\\ud834"' JSON.stringify('\uDEAD') '"\\udead"'
рдпрд╣ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдирдпрд╛ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдЗрд╕реЗ рдареАрдХ рдХрд░рддрд╛ рд╣реИред рдПрдЬ рдФрд░ рдХреНрд░реЛрдо рдХреЛ рдкрд╣рд▓реЗ рд╣реА рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рдЪреБрдХрд╛ рд╣реИред
рдкрджрд╛рд╡рдирдд RegExp рд╕реБрд╡рд┐рдзрд╛рдПрдБ
https://github.com/tc39/proposal-regexp-legacy-features
RegExp.$1
, рдФрд░ RegExp.prototype.compile()
рд╡рд┐рдзрд┐ RegExp.prototype.compile()
ред
рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рддрд░реАрдХреЗ .trimStart()
рдФрд░ .trimEnd()
https://github.com/tc39/proposal-string-left-right-trim
рдХреНрд░реЛрдо рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕рд╛рджреГрд╢реНрдп рджреНрд╡рд╛рд░рд╛ .padStart()
рдФрд░ .padEnd()
, рдХреНрд░рдорд╢рдГ рд▓рд╛рдЗрди рдХреЗ рдЖрд░рдВрдн рдФрд░ рдЕрдВрдд рдореЗрдВ .padEnd()
рдХрд╛рдЯреЗрдВ:
const one = " hello and let "; const two = "us begin. "; console.log( one.trimStart() + two.trimEnd() )
.matchAll () рдПрдХ рдирдИ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╡рд┐рдзрд┐ рд╣реИред
https://github.com/tc39/proposal-string-matchall
рдХреНрд░реЛрдо рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
g
рдзреНрд╡рдЬ рдХреЗ рд╕рд╛рде .match()
рд╡рд┐рдзрд┐ рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ .match()
рджреЗрддрд╛ рд╣реИ:
const string_for_searh = 'olololo'
рддрд░реНрдХ рдПрдХ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрдиреНрдпрдерд╛ рдПрдХ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:
'olololo'.matchAll('o')
рдкрд░рд┐рдгрд╛рдо
рд╕реНрдЯреЗрдЬ 4 рдореЗрдВ рдФрд░ рднреА рдХреЙрд╕реНрдореЗрдЯрд┐рдХ рдмрджрд▓рд╛рд╡ рдЖрдПред рдмреНрдпрд╛рдЬ рд╕реНрдЯреЗрдЬ 3 рд╣реИ ред рдХреНрд░реЛрдо рдореЗрдВ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕реБрдЭрд╛рд╡ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓рд╛рдЧреВ рд╣реИрдВ, рдФрд░ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдЧреБрдг рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдЧреЗ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВред
рд▓реЗрдЦ рдореЗрдВ рд╕реБрдзрд╛рд░
рдпрджрд┐ рдЖрдкрдиреЗ рд▓реЗрдЦ рдореЗрдВ рдХреЛрдИ рдЕрд╢реБрджреНрдзрд┐, рддреНрд░реБрдЯрд┐ рджреЗрдЦреА рд╣реИ, рдпрд╛ рдкреВрд░рдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╣реИ, рддреЛ рдЖрдк рдореБрдЭреЗ рдПрдХ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╕рдВрджреЗрд╢ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ , рд▓реЗрдХрд┐рди рд▓реЗрдЦ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА https://github.com/KasperGreen/es10 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред рд╕рдХреНрд░рд┐рдп рдпреЛрдЧрджрд╛рди рдХреЗ рд▓рд┐рдП, рдореИрдВ рдХреЗрдбреАрдкреАрд╡реА рдХреЗ рд╕рд╛рде рдкреАрд▓реЗ рдЪреБрдВрдмрдХ-рдкрджрдХ рдХрд╛ рдкреБрд░рд╕реНрдХрд╛рд░ рджреВрдВрдЧрд╛ред
рд╕рдВрдмрдВрдзрд┐рдд рд╕рд╛рдордЧреНрд░реА
Ecma-262 рдорд╛рдирдХ рдХрд╛ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг
Ecma-262 рдорд╛рдирдХ рдХреЗ рдЕрдЧрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдбреНрд░рд╛рдлреНрдЯ
ECMAScript
рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдирдП # рдирд┐рдЬреА рд╡рд░реНрдЧ рдХреЗ рдХреНрд╖реЗрддреНрд░
ES7, ES8 рдФрд░ ES9 рдорд╛рдирдХреЛрдВ рдХрд╛ рдЕрд╡рд▓реЛрдХрди
рдХреБрдЯрд┐рдпрд╛
рдмрд┐рдЧрдЖрдИрдВрдЯ - рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд▓рдВрдмреА рдЕрдВрдХрдЧрдгрд┐рдд
рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЙрдбреНрдпреВрд▓ рдкрде
рдХреНрдпреЛрдВ рдирд╣реАрдВ рдирд┐рдЬреА рдПрдХреНрд╕
ECMAScript рдкреНрд░рд╕реНрддрд╛рд╡: Array.prototypeред {рдлрд╝реНрд▓реИрдЯ, рдлрд╝реНрд▓реИрдЯрдореИрдк}
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдФрд░ рдирд┐рдЬреА рд╡рд░реНрдЧ рдХреЗ рдХреНрд╖реЗрддреНрд░
рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ: рдмрд┐рдЧ рд╣реЛрд▓ рдкреВрд░рд╛ рдХреНрдпреЛрдВ
рдпреВрдкреАрдбреА (рдорд╛рд░реНрдЪ):
рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕реНрдЯреЗрдЬ рдореЗрдВ рдмрджрд▓рд╛ - 4 :
тАв .trimStart()
рдФрд░ .trimEnd()
- рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╡рд┐рдзрд┐рдпрд╛рдБ # ;
тАв .matchAll()
- .match()
рдЧреНрд▓реЛрдмрд▓ рдлреНрд▓реИрдЧ # рдХреЗ рд╕рд╛рде ;

рдлрд╝реЛрдЯреЛ рджреНрд╡рд╛рд░рд╛: kasper.green; рдкреАрд▓рд╛ рдЪреБрдВрдмрдХ: elfafeya.art рдФрд░ kasper.green