
рд╣рд╛рдп рд╣рдорд░! рд╣рд░ рдХреЛрдИ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдПрдирдкреАрдПрдо рдХреНрдпрд╛ рд╣реИред Eeeee, рдЬреЛ рд╡рд╣рд╛рдБ "рдХрдЪрд░рд╛" рдЪрд┐рд▓реНрд▓рд╛рдпрд╛?! рдПрдирдкреАрдПрдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд▓рдЧрднрдЧ рдХрд┐рд╕реА рднреА рдЬреЗрдПрд╕ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдХрд░рдг рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдореИрдВ рд╢рд░реНрдд рд▓рдЧрд╛рддрд╛ рд╣реВрдВ рдХрд┐ рдпрджрд┐ рдЖрдк рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рд╣реИрдВ - рддреЛ рдХрд╣реАрдВ рди рдХрд╣реАрдВ рдЖрдкрдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдкреИрдХреЗрдЬред Json рдлрд╝рд╛рдЗрд▓ (рдпрд╛ рд╢рд╛рдпрдж рдПрдХ рдирд╣реАрдВ) рдЖрд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рдЭреВрда рд╣реИред рдПрдХ рд╕рдордп рдореЗрдВ, рдПрдирдкреАрдПрдо рдиреЗ рдмрд╣реБрдд рд╢реЛрд░ рдХрд┐рдпрд╛: рдПрдХ
рдкреИрдХреЗрдЬ рдХреЗ рдХрд╛рд░рдг, рдЗрдВрдЯрд░рдиреЗрдЯ рдХрд╛ рдЖрдзрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд▓рдЧрднрдЧ рдЯреВрдЯ рдЧрдпрд╛ред рдФрд░ рдпрд╣ рдХреНрдпрд╛? рдмрд┐рд▓реНрд▓реА рдХреЗ рд▓рд┐рдП рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред
рдЙрд╕ рд╕рдордп рднреА, рдЖрдИрдЯреА рд╕рдореБрджрд╛рдп рдореЗрдВ рдкреИрдХреЗрдЬреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреА рдмреЗрд░реБрдЦреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдЧрд░реНрдо рдЪрд░реНрдЪрд╛рдПрдБ рд╣реБрдИрдВред рдХреБрдЫ рдиреЗ рдХрд╣рд╛ рдХрд┐ рдпрд╣ рдПрдХ рдпреВрдирд┐рдХреНрд╕-рддрд░реАрдХрд╛ рдерд╛, рджреВрд╕рд░реЛрдВ рдХреЛ рдиреЛрдб_рдореЙрдбреНрдпреВрд▓реНрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдХреЗ рдЖрдХрд╛рд░ рдореЗрдВ рдЕрд╢рд┐рд╖реНрдЯ рдерд╛, рдФрд░ рдЕрднреА рднреА рдЕрдиреНрдп рд╕рд┐рд╢реНрдирд┐рдХ рдереЗ рдФрд░ рдХрдо рд╕реЗ рдХрдо рдЙрд╕рд╕реЗ рдЬрд▓рди рд╣реЛ рд░рд╣реА рдереАред рдХреМрди рд╕рд╣реА рд╣реИ? рдХрдИ рдордд рд╣реИрдВред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рд╕рд╛рд░ рдореЗрдВ рддрд▓реНрд▓реАрди рд╣реИрдВ, рддреЛ рдЖрдк рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЬреЗрдПрд╕ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡
рдореЗрдВ рд╣рд╛рд╕реНрдп рдХреА рднрд╛рд╡рдирд╛ рд╣реИ, рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╕рднреА рдЕрд╡рд╕рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рдФрд░ рдЖрд╡рд╢реНрдпрдХ рдкреИрдХреЗрдЬ! рдЖрдЗрдП рдЙрдирдореЗрдВ рд╕реЗ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рджреЗрдЦреЗрдВ:
1. рд╕рд╣реА рд░реВрдкрд░реЗрдЦрд╛
рд╢реВрдиреНрдп рдирд┐рд░реНрднрд░рддрд╛, рдЦреБрд▓рд╛ рд▓рд╛рдЗрд╕реЗрдВрд╕, рд╢реВрдиреНрдп рдЖрдХрд╛рд░, рдЕрдзрд┐рдХрддрдо рдкреНрд░рджрд░реНрд╢рди, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд╛рдл рдХреЛрдб! рдЦреИрд░, рд╡рд┐рдЬреНрдЮрд╛рди рдЧрд▓реНрдк рдФрд░ рдПрдХ рдврд╛рдВрдЪрд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпрд╛ рдпрд╣ рд╣реИ? рд╡реЗ рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЗ рдЗрди рдХреЛрдгреАрдп рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рдЙрд╕ рдкрд░ рдерд╛ рдЬреЛ рд╕рднреА рдиреЗ рд▓рд┐рдЦрд╛ рдерд╛ред рдЖрдкрдХрд╛ рдкрд╕рдВрджреАрджрд╛ рдврд╛рдВрдЪрд╛ рдЕрдм рдПрдирдкреАрдПрдо рдореЗрдВ
рдХреИрдлреАрди рдореБрдХреНрдд рд╣реИ!
рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдХреЛрдбnpmjs.com/package/vanilla-javascript2. рд╕рд┐рд╕реНрдЯрдо рд╕реНрдерд┐рд░рддрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдХрд░рдг
рдХрд┐рд╕реА рднреА рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рд╣рдореЗрд╢рд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕реНрдерд╛рди рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдЧрд┐рд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реИред рдпрд╣ рдмреИрдВрдХрд┐рдВрдЧ рд▓реЗрдирджреЗрди рдХрд╛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдХреИрд╢ рдХреЛ рдЧрд░реНрдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдпрд╛ рдЙрд╕реЗ рдкреБрд░рд╕реНрдХрд╛рд░ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЦреЛрдВ рд╕рд╛рдЗрдЯ рдЖрдЧрдВрддреБрдХ рдХреА рддрд▓рд╛рд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЖрдк рд╣рдореЗрд╢рд╛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╕рдм рдХреБрдЫ рд╡реИрд╕рд╛ рд╣реА рд╣реЛ рдЬреИрд╕рд╛ рдХрд┐ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдкреИрдХреЗрдЬ рдЖрдкрдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдореЗрдВ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЕрдкрдиреА рдХрд┐рд╕реНрдордд рдХреЛ рдорд╛рдкрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред рдХреНрдпрд╛ рдХрд┐рд╕реНрдордд рдЖрдЬ рдЖрдк рдкрд░ рдореБрд╕реНрдХреБрд░рд╛ рд░рд╣реА рд╣реИ? рд╣рдо рдЙрддреНрдкрд╛рджрди рдкрд░ рд╕реАрдзреЗ рдкреВрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ! рдХреНрдпрд╛ рднрд╛рдЧреНрдп рдФрд╕рдд рд╕реЗ рдХрдо рд╣реИ? рд╕рд╛рдВрддреНрд╡рдирд╛ рдХреЛ рднреА рдордд рджреЗрдЦреЛ, рдпрд╛рд░ред
npmjs.com/package/lucky3. рдУ (рдПрди) рдореЗрдВ рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ рд╕рд╛рде рдХреНрд░рдордмрджреНрдз рдХрд░реЗрдВ
рдХреЛрдИ рднреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдЫрдБрдЯрд╛рдИ рд╕рдм рдХреБрдЫ рд╣реИред рд╕реЙрд░реНрдЯ рдХрд┐рдП рдмрд┐рдирд╛, рдЖрдк рдПрдХ рдмрдЯрди рдирд╣реАрдВ рджрд┐рдЦрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдПрдХ рд░рд┐рдкреЛрд░реНрдЯ рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╕рд┐рд░реНрдл рджреЛ рдирдВрдмрд░ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рднрд▓рд╛, рдХрд┐рд╕реА рдФрд░ рд╡рд┐рд╢реНрд╡рд╡рд┐рджреНрдпрд╛рд▓рдп рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдЗрддрдиреА рд▓рдЧрди рд╕реЗ рдХреНрдпреЛрдВ рдкрдврд╝рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛? рдХрдпрд╛рдорддред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдУ (рдПрди) рдХреЗ рд▓рд┐рдП рдЫрдВрдЯрд╛рдИ
рдХрд┐рд╕реА рднреА рднрд╛рд╖рд╛ рдореЗрдВ рд╣реЛрддреА рд╣реИ , рд▓реЗрдХрд┐рди рдпрд╣ рддрдереНрдп рдХрд┐ рдпрд╣ рдЬреЗрдПрд╕ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реИ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЕрдЪреНрдЫрд╛ рд╣реИред
рдпрджреНрдпрдкрд┐ рдЗрд╕ рдкреИрдХреЗрдЬ рдХрд╛ рд▓рд╛рдЗрд╕реЗрдВрд╕ MIT-shnaya рд╣реИ, рдЗрд╕рдХреЗ рд▓реЗрдЦрдХ, рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ, рдЗрд╕реЗ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрд╢рдВрд╕рд╛ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдХреНрдпреЛрдВ? рд╢рд╛рдпрдж рдЙрд╕реЗ рдбрд░ рд╣реИ рдХрд┐ рдХреЛрдб рдмрд╣реБрдд рддреЗрдЬрд╝ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдХреНрдпрд╛ рдЕрдлрд╝рд╕реЛрд╕ рд╣реИред
рдХреЛрдб рдХреА рдХреЗрд╡рд▓
17 рд▓рд╛рдЗрдиреЗрдВ , рд╢реВрдиреНрдп рдирд┐рд░реНрднрд░рддрд╛, O (n) рд╕рдм рдХреЗ рдмрд╛рдж рдПрдХ рд╕рдкрдирд╛ рд╣реИ, рдЫрдВрдЯрдиреА рдирд╣реАрдВ!
npmjs.com/package/sleepsort4. рдЕрд░реНрдзрд╡рд┐рд░рд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдзреБрдирд┐рдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг
рд╣рд╛рд░реНрдбрдХреЛрдб рд╣рдореЗрд╢рд╛ рдЦрд░рд╛рдм рд╣реЛрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдкрдХреЛ рдЕрднреА рднреА рдЗрддрдиреА рднрдпрд╛рдирдХ рдЪреАрдЬрд╝ рдХреЗ рд▓рд┐рдП рдЬрд╛рдирд╛ рдкрдбрд╝реЗ рддреЛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛? рдЕрдЧрд░ рдЖрдкрдХреЛ рдХреЛрдб рдореЗрдВ "рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИ" рдЬреИрд╕рд╛ рдХреБрдЫ рд▓рд┐рдЦрдирд╛ рдерд╛ - рдирд┐рд░рд╛рд╢ рди рд╣реЛрдВ, рдЖрдк рдЕрдкрдирд╛ рдХреЛрдб рдХреНрд▓реАрдирд░ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЕрд░реНрдзрд╡рд┐рд░рд╛рдо рдХреЛ рд╣рд╛рд░реНрдбрдХреЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ - рдмрд╕ рдЗрд╕
рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
const greet = "Hello, habr;"
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреИрдХреЗрдЬ рдмрд╣реБрдд рд╕рд╛рд░реА рдЙрдкрдпреЛрдЧреА рдЪреАрдЬреЗрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдХреЛрд░рд┐рдпрд╛рдИ рдореЗрдВ рдПрдХ рдЕрд░реНрдзрд╡рд┐рд░рд╛рдо?
semicolon.korean()
рдЖрдкрдХреА рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдЖрдк рдПрдХ рдЕрд░реНрдзрд╡рд┐рд░рд╛рдо рдлрд┐рд╕рд▓ рдЧрдП рд╣реИрдВ? semicolon.isSemicolon рдЖрдкрдХреА рд╕рд╣рд╛рдпрддрд╛ рдХрд░реЗрдЧрд╛ред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ - рдпрд╣ рдЕрд░реНрдзрд╡рд┐рд░рд╛рдо рдХреА рджреБрдирд┐рдпрд╛ рдореЗрдВ рдПрдХ рд╕реНрд╡рд┐рд╕ рдЪрд╛рдХреВ рд╣реИред
npmjs.com/package/semicolon.js5. рдмреВрд▓рд┐рдпрди рдореВрд▓реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╢рд╛рдВрдд рджреГрд╖реНрдЯрд┐рдХреЛрдг
рдореИрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдкрд┐рдЫрд▓реЗ рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рддрдиреЗ рдЙрддреНрд╕реБрдХ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЖрдЦрд┐рд░реА рд╣реИ, рдИрдорд╛рдирджрд╛рд░реА рд╕реЗред
рдЕрдм рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ: рдЖрдкрдХреЗ рдкрд╛рд╕ рдпрд╣ рдХреЛрдб рд╣реИ:
const isJavaScriptStrange = true;
рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рдЖрдкрдХреЛ рдЗрд╕ рдореВрд▓реНрдп рдХрд╛ рд╡реНрдпреБрддреНрдХреНрд░рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЖрдк рдпрд╣ рдХреИрд╕реЗ рдХрд░рддреЗ рд╣реИрдВ? рд╣рд╛рдВ, рдЗрд╕ рддрд░рд╣ рдХреА рд╕рдВрднрд╛рд╡рдирд╛:
const newAnswer = !isJavaScriptStrange;
рдФрд░ рдЕрдЧрд░ рдЖрдкрдХреЛ рд╡реНрдпреБрддреНрдХреНрд░рдо рдХреЗ рд╡реНрдпреБрддреНрдХреНрд░рдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдареАрдХ рд╣реИ, рддреЛ рдЖрдк рдХрднреА рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ)?
рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕ рддрд░рд╣:
const newNewAnswer = !!isJavaScriptStrange;
рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╡рд┐рд╕реНрдордпрд╛рджрд┐рдмреЛрдзрдХ рдмрд┐рдВрджреБ, рд╣реИ рдирд╛? рдмрд╣реБрдд рднрд╛рд╡реБрдХ, рдмрд╣реБрдд рднрд╛рд╡реБрдХ! рд▓реЗрдХрд┐рди, рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдПрдирдкреАрдПрдо рдХреЗ рдкрд╛рд╕ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╣реИред
import 'toggle-boolean' const myBoolean = true let anotherOne = !myBoolean;
npmjs.com/package/toggle-booleanрд╡рд╣ рд╕рдм, рдЕрдЪреНрдЫрд╛ рд╣реИ - рдереЛрдбрд╝рд╛-рдереЛрдбрд╝рд╛ рдХрд░рдХреЗ! рдЕрдкрдиреЗ рдПрдирдкреАрдПрдо рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдФрд░ рдЕрдкрдиреЗ рдЬреАрд╡рди рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рднрд╛рдЧреЛ, рдФрд░ рдХреЛрдб рдХреНрд▓реАрдирд░ рдФрд░ рддреЗрдЬ рд╣реИ!
рдФрд░ рдЕрдм, рдЧрдВрднреАрд░рддрд╛ рд╕реЗ, рдЖрдкрдХреЛ рдХреНрдпрд╛ рд▓рдЧрддрд╛ рд╣реИ, рдХреНрдпрд╛ рдкреЗрд╢реЗрд╡рд░ рдЙрдкрдХрд░рдгреЛрдВ рдореЗрдВ рдРрд╕рд╛ рд╣рд╛рд╕реНрдп рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИ? рдЪреБрдЯрдХреБрд▓реЗ рдордЬрд╛рдХ рд╣реИрдВ - рд▓реЗрдХрд┐рди рдпреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрд╕рд▓реА рдкреИрдХреЗрдЬ рд╣реИрдВ, рдФрд░ рд╡реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред