
рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдкрд┐рдЫрд▓реЗ рд╕рд╛рдд рд╡рд░реНрд╖реЛрдВ рдореЗрдВ рдореИрдВ рд▓рдЧрднрдЧ рд╣рд░ рдХрд╛рд░реНрдп рджрд┐рд╡рд╕ рдореЗрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд▓рд┐рдЦрддрд╛ рд╣реВрдВ, рдореБрдЭреЗ рдпрд╣ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдореИрдВ ES рд╕реЗ рдирд╡рд╛рдЪрд╛рд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдорд╛рдЪрд╛рд░реЛрдВ рдкрд░ рдмрд╣реБрдд рдХрдо рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВред Async / wait рдФрд░ proxies рдЬреИрд╕реА рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдПрдХ рдмрд╛рдд рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рд░ рд╕рд╛рд▓ рдЫреЛрдЯреЗ рдЪрд░рдгрдмрджреНрдз рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рдПрдХ рдзрд╛рд░рд╛ рд╣реЛрддреА рд╣реИ рдЬреЛ рдореЗрд░реА рджреГрд╖реНрдЯрд┐ рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдирд╣реАрдВ рдЖрддреА рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрд╢рд╛ рдХреБрдЫ рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реЛрддрд╛ рд╣реИред
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВрдиреЗ рдЖрдзреБрдирд┐рдХ рдЬреЗрдПрд╕ рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд┐рдпрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдЙрдирдХреЗ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рдкрд░ рдЬреНрдпрд╛рджрд╛ рдмрд╛рдд рдирд╣реАрдВ рдХрд░рддреЗ рдереЗред рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреЗрд╡рд▓ рдкреНрд░рдпреЛрдЬреНрдпрддрд╛ рдмрдврд╝рд╛рддреЗ рд╣реИрдВ, рдФрд░ рдХреБрдЫ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╣реИрдВ рдФрд░ рдЖрдкрдХреЛ рдХреЛрдб рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рд▓рд┐рдЦрдиреЗ рд╕реЗ рдмрдЪрд╛ рд╕рдХрддреЗ рд╣реИрдВред
ES2015
рджреНрд╡рд┐рдЖрдзрд╛рд░реА рдФрд░ рдЕрд╖реНрдЯрдХ рд╢рд╛рдмреНрджрд┐рдХ
рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЕрдХреНрд╕рд░ рдмрд╛рдЗрдирд░реА рд╣реЗрд░рдлреЗрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдХрднреА-рдХрднреА рдРрд╕реЗ рдХрд╛рд░реНрдп рд╕рд╛рдордиреЗ рдЖрддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЕрдиреНрдпрдерд╛ рд╣рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рдЖрдк рдХрдордЬреЛрд░ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдЪреНрдЪ-рдкреНрд░рджрд░реНрд╢рди рдХреЛрдб рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдмрд┐рдЯреНрд╕ рдХреЛ рд╕реНрдерд╛рдиреАрдп рднрдВрдбрд╛рд░рдг рдореЗрдВ рдзрдХреЗрд▓ рджреЗрддреЗ рд╣реИрдВ, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ RGB рдкрд┐рдХреНрд╕реЗрд▓ рдЬреЛрдбрд╝рддреЛрдбрд╝ рдХрд░рддреЗ рд╣реИрдВ, рдпрд╛ рдмрд╛рд░реАрдХреА рд╕реЗ рдкреИрдХ рдмрд╛рдЗрдирд░реА рдбреЗрдЯрд╛ рдкреНрд░рд╛рд░реВрдкреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред
рдпрд╣ рд╕рдм рдмрд╛рдЗрдирд░реА рдирдВрдмрд░ рдХреЛ рдЫрд┐рдкрд╛рдиреЗ / рд╕рдВрдпреЛрдЬрди рдкрд░ рдмрд╣реБрдд рдХрд╛рдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ; рдпрд╣ рд╣рдореЗрд╢рд╛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рджрд╢рдорд▓рд╡ рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рдЫрд┐рдкреЗ рд╣реБрдП рд╡реНрдпрд░реНрде рдереЗред рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП, рджреНрд╡рд┐рдЖрдзрд╛рд░реА рд╢рд╛рдмреНрджрд┐рдХ рдкреНрд░рд╛рд░реВрдк
0b
: 0
0b
рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ред
const binaryZero = 0b0; const binaryOne = 0b1; const binary255 = 0b11111111; const binaryLong = 0b111101011101101;
рдпрд╣ рдмрд╛рдЗрдирд░реА рдлреНрд▓реИрдЧ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЛ рдмрд╣реБрдд рд╕рд░рд▓ рдмрдирд╛рддрд╛ рд╣реИ:
рдЕрд╖реНрдЯ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рдмрд╛рддред рдЬреЗрдПрд╕ рджреБрдирд┐рдпрд╛ рдореЗрдВ, рдпрд╣ рдПрдХ рдЖрд▓рд╛ рдЕрд╡рд╕рд░ рд╣реИ, рд▓реЗрдХрд┐рди рд╡реЗ рдЕрдХреНрд╕рд░ рдиреЗрдЯрд╡рд░реНрдХрд┐рдВрдЧ рдФрд░ рдХреБрдЫ рдлрд╝рд╛рдЗрд▓ рд╕реНрд╡рд░реВрдкреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЖрдк
0o
рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдСрдХреНрдЯрд▓ рдирдВрдмрд░ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред
рдирдВрдмрд░.рдЖрдИрдПрд╕рдПрдирдПрди ()
window.isNaN()
рд╕рд╛рде рднреНрд░рдорд┐рдд рдирд╣реАрдВ рд╣реЛрдирд╛, рдпрд╣ рдПрдХ рдирдИ рд╡рд┐рдзрд┐ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕рд╣рдЬ рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИред
рдХреНрд▓рд╛рд╕рд┐рдХ
isNaN
рдХреБрдЫ рджрд┐рд▓рдЪрд╕реНрдк рдЪрд╛рд▓ рд╣реИ:
isNaN(NaN) === true isNaN(null) === false isNaN(undefined) === true isNaN({}) === true isNaN('0/0') === true isNaN('hello') === true
рдпрд╣ рд╣рдореЗрдВ рдХреНрдпрд╛ рджреЗрддрд╛ рд╣реИ? рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЗрди рдорд╛рдкрджрдВрдбреЛрдВ рдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ
NaN
ред рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рд╕рдорд╕реНрдпрд╛ рд╕рднреА "рдкрд╕рдВрджреАрджрд╛" рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЧреБрдгреЛрдВ рдХреЗ рд╕рд╛рде рд╣реИ: рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХрд╛рд╕реНрдЯрд┐рдВрдЧред
window.isNaN
рддрд░реНрдХ
Number
рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдореЗрдВ рдбрд╛рд▓реЗ
window.isNaN
рд╣реИрдВред
рдирдИ рд╕реНрдереИрддрд┐рдХ рд╕рдВрдЦреНрдпрд╛
Number.isNaN()
рд╡рд┐рдзрд┐ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддреА рд╣реИред рдЙрдиреНрд╣реЛрдВрдиреЗ рдПрдХ рдмрд╛рд░ рдФрд░ рд╕рднреА рдХреЗ рд▓рд┐рдП рддрд░реНрдХреЛрдВ рдХреА рд╕рдорд╛рдирддрд╛ рдЙрдирдХреЗ рдФрд░
NaN
рдХреЛ рджреАред рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рд╕реНрдкрд╖реНрдЯ рд╣реИ:
Number.isNaN(NaN) === true Number.isNaN(null) === false Number.isNaN(undefined) === false Number.isNaN({}) === false Number.isNaN('0/0') === false Number.isNaN('hello') === false
рд╣рд╕реНрддрд╛рдХреНрд╖рд░: Number.isNaN : (value: any) => boolean
ES2016
рдпрдпрдпрдп рдпрдпрдп рдпрдпрдп рдпрдпрдпрдпрдп
рдпрд╣ рд╕рдордп-рд╕рдордп рдкрд░ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдШрд╛рддрд╛рдВрдХ рдХреЗ рд▓рд┐рдП рд╣рд╛рде рдкрд░ рд╢рд╛рдмреНрджрд┐рдХ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╣реЛрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реИ:
2**2 === 4 3**2 === 9 3**3 === 27
рдЕрдЬреАрдм рдмрд╛рдд рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ
рдпрдХреАрди рдерд╛ рдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдореМрдЬреВрдж рд╣реИред рд╢рд╛рдпрдж рдкрд╛рдпрдерди рдХреЗ рд╕рд╛рде рднреНрд░рдорд┐рддред
Array.prototype.includes ()
рдпрд╣ рдпрд╛рдж
array.indexOf(x) !== -1
рдореБрд╢реНрдХрд┐рд▓ рдерд╛, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдкрдиреЗ рдкрд┐рдЫрд▓реЗ рддреАрди рд╡рд░реНрд╖реЛрдВ рдореЗрдВ
array.indexOf(x) !== -1
рд▓рд┐рдЦрд╛ рд╣реИ, рддреЛ рдирдП рддрд░реАрдХреЗ рд╕реЗ рдЦреБрд╢реА рдордирд╛рдПрдВ:
[1, 2, 3].includes(2) === true [1, 2, 3].includes(true) === false
includes
рд╕рдорд╛рди рдореВрд▓реНрдп рд╢реВрдиреНрдп рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ
includes
рд╣реИ , рдЬреЛ рдХрд┐ рд╕рдЦреНрдд рд╕рдорд╛рдирддрд╛ рдЬрд╛рдБрдЪ (
===
) рдХреЗ рд▓рдЧрднрдЧ рд╕рдорд╛рди рд╣реИ, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдпрд╣
NaN
рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╕рд╛рдордЧреНрд░реА рдХреЗ рдмрдЬрд╛рдп рд▓рд┐рдВрдХ рджреНрд╡рд╛рд░рд╛ рд╡рд╕реНрддреБрдУрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рддрд╛ рд╣реИ:
const object1 = {}; const object2 = {}; const array = [object1, 78, NaN]; array.includes(object1) === true array.includes(object2) === false array.includes(NaN) === true
includes
рджреВрд╕рд░рд╛ рдкреИрд░рд╛рдореАрдЯрд░ рд▓рд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ,
fromIndex
, рдЬреЛ рдЖрдкрдХреЛ рдПрдХ рд╢рд┐рдлреНрдЯ рдорд╛рди рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:
рд╕рд╣рд╛рдпрдХред
рд╣рд╕реНрддрд╛рдХреНрд╖рд░: Array.prototype.includes : (match: any, offset?: Int) => boolean
ES2017
рд╕рд╛рдЭрд╛ рд╕реНрдореГрддрд┐ рдФрд░ рдкрд░рдорд╛рдгреБ рд╕рдВрдЪрд╛рд▓рди
рдпреЗ рдХреБрдЫ рдорд╣рд╛рди рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВ рдЬреЛ рдмрд╕ рдЕрдореВрд▓реНрдп рд╣реИрдВ рдпрджрд┐ рдЖрдкрдХреЛ рд╡реЗрдм рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЖрдк рдХрдИ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕реАрдзреЗ рдореЗрдореЛрд░реА рд╕рд╛рдЭрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рджреМрдбрд╝ рдХреА рд╕реНрдерд┐рддрд┐ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рддрд╛рд▓реЗ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдпреЗ рдХрд╛рдлреА рдЬрдЯрд┐рд▓ рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рджреЛ рд╢рд╛рдирджрд╛рд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рдЙрдирдХрд╛ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрд╕ рд▓реЗрдЦ рдкрд░ рднреЗрдЬреЗрдВ:
https://www.sitepen.com/blog/the-return-of-saredarraybuffers-and-atomics/ ред рд╕рднреА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЕрднреА рддрдХ рдЗрди рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЕрдЧрд▓реЗ рдХреБрдЫ рд╡рд░реНрд╖реЛрдВ рдореЗрдВ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╕реБрдзрд╛рд░ рд╣реЛрдЧрд╛ред
ES2018
рдирд┐рдпрдорд┐рдд рднрд╛рд╡реЛрдВ рдХреА рд╕реЛрдиреЗ рдХреА рдЦрд╛рди
ES2018 рдореЗрдВ рдирдИ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдПрдХ рдкреВрд░рд╛ рд╕рдореВрд╣ рд╣реИ:
рд▓реБрдХрдмрд╛рдЗрдВрдб рдореИрдЪ (рдкрд┐рдЫрд▓реЗ рдкрд╛рддреНрд░реЛрдВ рдХреЗ рд╕рд╛рде рдорд┐рд▓рд╛рди)
рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рдЬреЛ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ, рдЕрдм рдЖрдк рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЗ рдореИрдЪ
рд╕реЗ рдкрд╣рд▓реЗ рдкрд╛рддреНрд░реЛрдВ рдХреА рддрд▓рд╛рд╢ рдХрд░рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдбреЙрд▓рд░ рдЪрд┐рд╣реНрди рджреНрд╡рд╛рд░рд╛ рдкреВрд░реНрд╡рд╡рд░реНрддреА рд╕рднреА рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП:
const regex = /(?<=\$)\d+/; const text = 'This cost $400'; text.match(regex) === ['400']
рдпрд╣ рд╕рднреА рдирдП рд▓реБрдХрдЕрдк рдЧреНрд░реБрдк рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ, рдЯреНрд╡рд┐рди рд▓реБрдХрд╣реЗрдб рд╕рдореВрд╣:
Look ahead: (?=abc) Look behind: (?<=abc) Look ahead negative: (?!abc) Look behind negative: (?<!abc)
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЖрдЬ рдЖрдк рдкреБрд░рд╛рдиреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдирдП рд░реВрдк-рд░рдВрдЧ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдмрд╣реБрдд рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕реЗ рдХреЗрд╡рд▓ рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдиреЛрдб рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЬрд┐рд╕рдХрд╛ рдирд╛рдо рдХреИрдкреНрдЪрд░ рдЧреНрд░реБрдк рд░рдЦрд╛ рдЧрдпрд╛
рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдБ рдЕрдм рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрд╕рдореВрд╣ рдХрд╛ рдЪрдпрди рдХрд░ рд╕рдХрддреА рд╣реИрдВ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреА рд╣реИрдВред рд╣рд╛рд▓ рддрдХ, рд╣рдо рдХреЗрд╡рд▓ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдРрд╕реЗ рдЕрдВрд╢реЛрдВ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
const getNameParts = /(\w+)\s+(\w+)/g; const name = "Weyland Smithers"; const subMatches = getNameParts.exec(name); subMatches[1] === 'Weyland' subMatches[2] === 'Smithers'
рдФрд░ рдЕрдм рдЗрди рдЙрдкрд╕рдореВрд╣реЛрдВ (рдпрд╛ рд░рд┐рдХреЙрд░реНрдб рд╕рдореВрд╣реЛрдВ) рдХрд╛ рдирд╛рдордХрд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рд╣реИ: рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╣рдо рдХреЛрд╖реНрдардХ рдХреЗ рдЕрдВрджрд░
?<titl>
, рдпрджрд┐ рд╣рдо рд╕рдореВрд╣ рдХреЛ рдПрдХ рдирд╛рдо рджреЗрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ:
const getNameParts = /(?<first>\w+)\s(?<last>\w+)/g; const name = "Weyland Smithers"; const subMatches = getNameParts.exec(name); const {first, last} = subMatches.groups first === 'Weyland' last === 'Smithers'
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рдЕрдм рдХреЗрд╡рд▓ рдХреНрд░реЛрдо рдФрд░ рдиреЛрдб рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдЕрдм рдбреЙрдЯреНрд╕ рдирдИ рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рдпрд╣ рдХреЗрд╡рд▓
/s
рдзреНрд╡рдЬ рдХреЛ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
/someRegex./s
,
/anotherRegex./sg
ред
ES2019
Array.prototyp.flat () рдФрд░ рдлреНрд▓реИрдЯрдкрд╛рдЗрдк ()
рдПрдордбреАрдПрди рдкрд░ рдпрд╣ рджреЗрдЦрдХрд░ рдореБрдЭреЗ рдмрд╣реБрдд рдЦреБрд╢реА рд╣реБрдИред
рд╕реАрдзреЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ,
flat()
рдПрдХ рдмрд╣реБрдЖрдпрд╛рдореА рд╕рд░рдгреА рдХреЛ рдПрдХ рджреА рдЧрдИ рдЕрдзрд┐рдХрддрдо рдЧрд╣рд░рд╛рдИ рдкрд░ рдПрдХ рдЖрдпрд╛рдореА рд╕рд░рдгреА рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИ:
const multiDimensional = [ [1, 2, 3], [4, 5, 6], [7,[8,9]] ]; multiDimensional.flat(2) === [1, 2, 3, 4, 5, 6, 7, 8, 9]
flatMap
рдПрдХ
map
рд╣реИ рдЬрд┐рд╕рдХрд╛
flat
1. рдХреА рдЧрд╣рд░рд╛рдИ рдХреЗ рд╕рд╛рде рд╣реИред рдпрд╣ рдЙрдкрдпреЛрдЧреА рд╣реИ рдпрджрд┐ рдЖрдкрдХреЛ рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдореИрдк рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдПрдХ рд╕рд░рдгреА рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдиреЗрд╕реНрдЯреЗрдб рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдгрд╛рдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ:
const texts = ["Hello,", "today I", "will", "use FlatMap"];
рдЕрдирд▓рд┐рдорд┐рдЯреЗрдб рдХреИрдЪ
рдЕрдм рдЖрдк рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдлреЗрдВрдХрдиреЗ рдХреЗ рд╕рдВрджрд░реНрдн рдХреЗ рдмрд┐рдирд╛ рдкреНрд░рдпрд╛рд╕ / рдХреИрдЪ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ:
try {
рд╡реИрд╕реЗ, рд╣реБрдХ рдЬрд┐рд╕рдореЗрдВ рдЖрдк
e
рдХреЗ рдореВрд▓реНрдп рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рдирд╣реАрдВ рд░рдЦрддреЗ рд╣реИрдВ, рдХрднреА-рдХрднреА
рдкреЛрдХреЗрдореЙрди рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ
рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрджрд░реНрднрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛
рд╣реИ ред рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЛ рдЙрди рд╕рднреА рдХреЛ рдкрдХрдбрд╝рдирд╛ рд╣реИ!
рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореВрд▓реНрдп рдЯреНрд░рд┐рдорд┐рдВрдЧ рд╡рд┐рдзрд┐
рдереЛрдбрд╝рд╛, рд▓реЗрдХрд┐рди рдЕрдЪреНрдЫрд╛:
const padded = ' Hello world '; padded.trimStart() === 'Hello world '; padded.trimEnd() === ' Hello world';