рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд░реА рдХрд╛рд░реНрдп

рдлрд╝рдВрдХреНрд╢рдирд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдХреА рдПрдХ рд╢реИрд▓реА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рддрд░реНрдХреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдиреНрдп рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдФрд░ рдЕрдиреНрдп рдХрд╛рд░реНрдпреЛрдВ рд╕реЗ рд▓реМрдЯрдиреЗ рд╡рд╛рд▓реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред "рд╢реБрджреНрдз рдХрд╛рд░реНрдп" рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рднреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреА рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╢реИрд▓реА рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред рд╢реБрджреНрдз рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рдХреЗрд╡рд▓ рдЗрдирдкреБрдЯ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рдЬрдм рд╡реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред

рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╕рд┐рджреНрдзрд╛рдВрдд рдХрдИ рднрд╛рд╖рд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рд╣реИрдВред рдЗрдирдореЗрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ, рд╣рд╛рд╕реНрдХреЗрд▓, рдХреНрд▓реЛрдЬрд░, рдПрд░реНрд▓рд╛рдВрдЧ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рддрдВрддреНрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рджреВрд╕рд░реЛрдВ рдХреЗ рдмреАрдЪ, рд╢реБрджреНрдз рдХрд╛рд░реНрдпреЛрдВ, рдХрд░реА рдХрд╛рд░реНрдпреЛрдВ, рдЙрдЪреНрдЪ-рдХреНрд░рдо рдХрд╛рд░реНрдпреЛрдВ рдЬреИрд╕реА рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреЗ рдмреАрдЪ рдЬреНрдЮрд╛рди рдХрд╛ рдЕрд░реНрде рд╣реИред



рдЖрдЬ рд╣рдо рдЬрд┐рд╕ рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд╡рд╣ рдХрд░реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред рд╣рдо рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдХреИрд╕реЗ рдХрд╛рд░реНрдп рдХрд░рдирд╛ рдФрд░ рдХреИрд╕реЗ рдЗрд╕ рддрдВрддреНрд░ рдХрд╛ рдЬреНрдЮрд╛рди JS рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдХрд░реА рдХреНрдпрд╛ рд╣реИ?


рдлрд╝рдВрдХреНрд╢рдирд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЗрдВ рдХрд░реАрдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рдПрдХ рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдиреЗрд╕реНрдЯреЗрдб рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЗ рд╕реЗрдЯ рдореЗрдВ рдХрдИ рддрд░реНрдХреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдкрд░рд┐рд╡рд░реНрддрди рд╣реИред рдЬрдм рдПрдХ рдХрд░реАрдмреА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЙрд╕рдХреЗ рдкрд╛рд╕ рджрд┐рдП рдЧрдП рдПрдХ рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╡рд╣ рдПрдХ рдирдпрд╛ рдлрд╝рдВрдХреНрд╢рди рджреЗрддрд╛ рд╣реИ рдЬреЛ рдЕрдЧрд▓реЗ рддрд░реНрдХ рдХреЗ рдЖрдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░рддрд╛ рд╣реИред рдЕрдЧрд▓реЗ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдирдП рдлрд╝рдВрдХреНрд╢рдВрд╕ рд╣рд░ рдмрд╛рд░ рд╡рд╛рдкрд╕ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЬрдм рддрдХ рдХрд┐ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдЬрдм рддрдХ рдХрд┐ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЙрди рд╕рднреА рддрд░реНрдХреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рдкрд╣рд▓реЗ рдкреНрд░рд╛рдкреНрдд рддрд░реНрдХреЛрдВ, рдХреНрд▓реЛрдЬрд░ рддрдВрддреНрд░ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдЙрд╕ рдХреНрд╖рдг рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬрдм рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рдм рдХреБрдЫ рдорд┐рд▓ рдЬрд╛рддрд╛ рд╣реИред рдЕрдВрддрд┐рдо рддрд░реНрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдлрд╝рдВрдХреНрд╢рди рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкрд░рд┐рдгрд╛рдо рджреЗрддрд╛ рд╣реИред

рдХрд░реАрдиреЗ рдХреА рдмрд╛рдд рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рдпрд╣ рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХрдИ рддрд░реНрдХреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдХрдо рдЕрд╢реБрджреНрдзрддрд╛ рд╣реИред

Arity рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рддрд░реНрдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдБ рдПрдХ рдЬреЛрдбрд╝реА рдХреА рдШреЛрд╖рдгрд╛ рд╣реИ:

function fn(a, b) {    //... } function _fn(a, b, c) {    //... } 

_fn рдлрд╝рдВрдХреНрд╢рди рджреЛ рддрд░реНрдХ рд▓реЗрддрд╛ рд╣реИ (рдпрд╣ рдПрдХ рдмрд╛рдЗрдирд░реА рдпрд╛ 2-рдПрд░реА рдлрд╝рдВрдХреНрд╢рди рд╣реИ), _fn рдлрд╝рдВрдХреНрд╢рди рддреАрди рддрд░реНрдХ (рдПрдХ рдЯрд░реНрдирд░реА, 3-рдЖрд░реНрдп рдлрд╝рдВрдХреНрд╢рди) рд▓реЗрддрд╛ рд╣реИред

рдЪрд▓рд┐рдП рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ рдЬрдм, рдХрд░реАрдиреЗ рдХреЗ рджреМрд░рд╛рди, рдХрдИ рддрд░реНрдХреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдПрдХ рд╕реЗрдЯ рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдПрдХ рддрд░реНрдХ рд▓реЗрддрд╛ рд╣реИред

рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдп рд╣реИрдВ:

 function multiply(a, b, c) {   return a * b * c; } 

рдпрд╣ рддреАрди рддрд░реНрдХ рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдЙрдирдХреЗ рдЙрддреНрдкрд╛рдж рдХреЛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ:

 multiply(1,2,3); // 6 

рдЕрдм рдЖрдЗрдП рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдХрд┐ рдЗрд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдПрдХ рд╕реЗрдЯ рдореЗрдВ рдХреИрд╕реЗ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдПрдХ рддрд░реНрдХ рд▓реЗрддрд╛ рд╣реИред рдЖрдЗрдП рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдПрдХ рдШреБрдорд╛рд╡рджрд╛рд░ рд╕рдВрд╕реНрдХрд░рдг рдмрдирд╛рдПрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдХрдИ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп рд╕рдорд╛рди рдкрд░рд┐рдгрд╛рдо рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ:

 function multiply(a) {   return (b) => {       return (c) => {           return a * b * c       }   } } log(multiply(1)(2)(3)) // 6 

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣рд╛рдБ рд╣рдордиреЗ рдХреЙрд▓ рдХреЛ рддреАрди рддрд░реНрдХреЛрдВ - рд╕рд┐рдВрдЧрд▓ multiply(1,2,3) рд╕реЗ рддреАрди рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЙрд▓ рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ - multiply(1)(2)(3) ред

рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХрдИ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдмрджрд▓ рдЧрдпрд╛ рд╣реИред рдирдП рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдкрд┐рдЫрд▓реЗ рдПрдХ рдХреЛ рдЫреЛрдбрд╝рдХрд░, рдЧрдгрдирд╛ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рдВрдХреНрд╢рди, рдПрдХ рддрд░реНрдХ рд▓реЗрддрд╛ рд╣реИ рдФрд░ рджреВрд╕рд░рд╛ рдлрд╝рдВрдХреНрд╢рди рджреЗрддрд╛ рд╣реИ, рдПрдХ рддрд░реНрдХ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдФрд░ рдХрд┐рд╕реА рдЕрдиреНрдп рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдореЗрдВ рднреА рд╕рдХреНрд╖рдо рд╣реЛрддрд╛ рд╣реИред рдпрджрд┐ рдлреЙрд░реНрдо рдХрд╛ рдПрдХ рдирд┐рд░реНрдорд╛рдг рдХрдИ multiply(1)(2)(3) рдЖрдкрдХреЛ рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИ, рддреЛ рдЖрдЗрдП рдЗрд╕реЗ рдЗрд╕ рд░реВрдк рдореЗрдВ рд▓рд┐рдЦреЗрдВ рдХрд┐ рдЗрд╕реЗ рдмреЗрд╣рддрд░ рддрд░реАрдХреЗ рд╕реЗ рд╕рдордЭ рд╕рдХреЗрдВ:

 const mul1 = multiply(1); const mul2 = mul1(2); const result = mul2(3); log(result); // 6 

рдЕрдм рдпрд╣рд╛рдБ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ рд▓рд╛рдЗрди рд╕реЗ рд▓рд╛рдЗрдиред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рддрд░реНрдХ 1 рдХреЛ multiply рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ:

 const mul1 = multiply(1); 

рдЬрдм рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:

 return (b) => {       return (c) => {           return a * b * c       }   } 

рдЕрдм mul1 рдореЗрдВ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рд╕рдВрджрд░реНрдн рд╣реИ рдЬреЛ рдПрдХ рддрд░реНрдХ b рд▓реЗрддрд╛ рд╣реИред рд╣рдо рдлрд╝рдВрдХреНрд╢рди mul1 рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕реЗ 2 рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ:

 const mul2 = mul1(2); 

рдЗрд╕ рдХреЙрд▓ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:

 return (c) => {           return a * b * c       } 

mul2 рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рд╕рдВрджрд░реНрдн рд╣реЛрдЧрд╛ рдЬреЛ рдЗрд╕рдореЗрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрди рдСрдкрд░реЗрд╢рди рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк:

 mul2 = (c) => {           return a * b * c       } 

рдпрджрд┐ рд╣рдо рдЕрдм рдлрд╝рдВрдХреНрд╢рди mul2 рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕реЗ 3 рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдлрд╝рдВрдХреНрд╢рди рддрд░реНрдХреЛрдВ рдФрд░ b рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрд╡рд╢реНрдпрдХ рдЧрдгрдирд╛ рдХрд░реЗрдЧрд╛ред

 const result = mul2(3); 

рдЗрди рдЧрдгрдирд╛рдУрдВ рдХрд╛ рдкрд░рд┐рдгрд╛рдо 6 рд╣реЛрдЧрд╛:

 log(result); // 6 

mul2 рдлрд╝рдВрдХреНрд╢рди, рдЬрд┐рд╕рдореЗрдВ рдиреЗрд╕реНрдЯрд┐рдВрдЧ рдХрд╛ рдЙрдЪреНрдЪрддрдо рд╕реНрддрд░ рд╣реИ, рдЧреБрдВрдЬрд╛рдЗрд╢ рддрдХ рдкрд╣реБрдВрдЪ рд╣реИ, multiply рдФрд░ mul1 рджреНрд╡рд╛рд░рд╛ рдЧрдард┐рдд рдХреНрд▓реЛрдЬрд░ рддрдХред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ mul2 рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ mul2 рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдШреЛрд╖рд┐рдд рдЪрд░ рдХреЗ рд╕рд╛рде рдЧрдгрдирд╛ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдЬрд┐рдирдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рдкрд╣рд▓реЗ рд╣реА рдкреВрд░рд╛ рд╣реЛ рдЪреБрдХрд╛ рд╣реИ, рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреБрдЫ рдорд╛рдиреЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░ рдЪреБрдХреЗ рд╣реИрдВ рдФрд░ рдХрдЪрд░рд╛ рдХрд▓реЗрдХреНрдЯрд░ рджреНрд╡рд╛рд░рд╛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред

рдКрдкрд░ рд╣рдордиреЗ рдПрдХ рд╕рд╛рд░ рдЙрджрд╛рд╣рд░рдг рдХреА рдЬрд╛рдВрдЪ рдХреА, рд▓реЗрдХрд┐рди, рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдПрдХ рд╣реА рдлрд╝рдВрдХреНрд╢рди, рдЬрд┐рд╕реЗ рдПрдХ рдЖрдпрддрд╛рдХрд╛рд░ рдмреЙрдХреНрд╕ рдХреА рдорд╛рддреНрд░рд╛ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

 function volume(l,w,h) {   return l * w * h; } const vol = volume(100,20,90) // 180000 

рдпрд╣рд╛рдБ рдЗрд╕рдХрд╛ рдХрд░реА рд╕рдВрд╕реНрдХрд░рдг рдХреНрдпрд╛ рджрд┐рдЦрддрд╛ рд╣реИ:

 function volume(l) {   return (w) => {       return (h) => {           return l * w * h       }   } } const vol = volume(100)(20)(90) // 180000 

рддреЛ, рдХрд░реА рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рдЪрд╛рд░ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ: рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдПрдХ рдЕрдиреНрдп рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдлрд╝рдВрдХреНрд╢рди рджреЗрддрд╛ рд╣реИред

рдХрд░реА рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЖрдВрд╢рд┐рдХ рдЙрдкрдпреЛрдЧ


рдЕрдм, рд╢рд╛рдпрдж, рдПрдХ рднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдиреЗрд╕реНрдЯреЗрдб рдлрд╝рдВрдХреНрд╢рди рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреЗ рд╕рдордп, рдиреЗрд╕реНрдЯреЗрдб рдлрд╝рдВрдХреНрд╢рди рдХреА рд╕рдВрдЦреНрдпрд╛, рдлрд╝рдВрдХреНрд╢рди рдХреЗ рддрд░реНрдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИред рдФрд░ рдЕрдЧрд░ рдХрд░реАрдиреЗ рдХреА рдмрд╛рдд рдЖрддреА рд╣реИ, рддреЛ рд╡рд╣ рд╣реИред

рд╡реЙрд▓реНрдпреВрдо рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╕рдВрд╕реНрдХрд░рдг, рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╣реА рджреЗрдЦрд╛ рд╣реИ, рдЗрд╕реЗ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

 function volume(l) {   return (w, h) => {       return l * w * h   } } 

рдпрд╣рд╛рдВ рд╡рд┐рдЪрд╛рд░ рд▓рд╛рдЧреВ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдКрдкрд░ рдЪрд░реНрдЪрд╛ рдХрд┐рдП рдЧрдП рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рдорд╛рдиред рдЖрдк рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 const hV = volume(70); hV(203,142); hV(220,122); hV(120,123); 

рдФрд░ рдЖрдк рдпрд╣ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 volume(70)(90,30); volume(70)(390,320); volume(70)(940,340); 

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣рд╛рдВ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреИрд╕реЗ рд╣рдо volume(70) рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде, рдирд┐рдХрд╛рдпреЛрдВ рдХреА рдорд╛рддреНрд░рд╛ рдХреА рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдпрд╛, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдПрдХ рдЖрдпрд╛рдо (рдЕрд░реНрдерд╛рддреН, рд▓рдВрдмрд╛рдИ, l ) рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред volume рдлрд╝рдВрдХреНрд╢рди 3 рддрд░реНрдХреЛрдВ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ 2 рдиреЗрд╕реНрдЯреЗрдб рдлрд╝рдВрдХреНрд╢рди рд╣реЛрддреЗ рд╣реИрдВ, рд╕рдорд╛рди рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЬрд┐рд╕ рдХрд░реА рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ 3 рдиреЗрд╕реНрдЯреЗрдб рдлрд╝рдВрдХреНрд╢рди рд╣реЛрддреЗ рд╣реИрдВред

volume(70) рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдкреНрд░рд╛рдкреНрдд рдлрд╝рдВрдХреНрд╢рди рдЖрдВрд╢рд┐рдХ рдлрд╝рдВрдХреНрд╢рди рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреА рдХрд░реА рдФрд░ рдЖрдВрд╢рд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдПрдХ-рджреВрд╕рд░реЗ рдХреЗ рд╕рдорд╛рди рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрд╡рдзрд╛рд░рдгрд╛рдПрдВ рдЕрд▓рдЧ рд╣реИрдВред

рдЖрдВрд╢рд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ, рдлрд╝рдВрдХреНрд╢рди рдХрдо рддрд░реНрдХреЛрдВ (рдХрдо arity) рдХреЗ рд╕рд╛рде рджреВрд╕рд░реЗ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИред рдРрд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдХреБрдЫ рддрд░реНрдХ рддрдп рдХрд┐рдП рдЧрдП рд╣реИрдВ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рдЙрдирдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реИрдВ)ред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд╕рдорд╛рд░реЛрд╣ рд╣реИ:

 function acidityRatio(x, y, z) {   return performOp(x,y,z) } 

рдЗрд╕реЗ рдЗрд╕ рдореЗрдВ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

 function acidityRatio(x) {   return (y,z) => {       return performOp(x,y,z)   } } 

performOp() рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдпрд╣рд╛рдВ рдирд╣реАрдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдХреЗ рддрд╣рдд рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдлрд╝рдВрдХреНрд╢рди рдЬрд┐рд╕реЗ рдирдП acidityRatio() рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдПрдХ рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдорд╛рди рдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдореВрд▓ рдлрд╝рдВрдХреНрд╢рди рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдПрдХ рддрд░реНрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╣реИ, рдФрд░ рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдореВрд▓ рд╕реЗ рдХрдо рдПрдХ рддрд░реНрдХ рд▓реЗрддрд╛ рд╣реИред

рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдХрд░реА рд╕рдВрд╕реНрдХрд░рдг рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:

 function acidityRatio(x) {   return (y) = > {       return (z) = > {           return performOp(x,y,z)       }   } } 

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдХрд░реА рдХрд░рддреЗ рд╕рдордп, рдиреЗрд╕реНрдЯреЗрдб рдлрд╝рдВрдХреНрд╢рди рдХреА рд╕рдВрдЦреНрдпрд╛ рдореВрд▓ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рддрд░реНрдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрддреА рд╣реИред рдЗрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдп рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рддрд░реНрдХ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдпрджрд┐ рддрд░реНрдХреЛрдВ рдХреЗ рдХрд╛рд░реНрдп рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╛ рдХреЗрд╡рд▓ рдПрдХ рддрд░реНрдХ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЗрд╕ рдкрд░ рдЕрдВрдХреБрд╢ рдирд╣реАрдВ рд▓рдЧрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЬрд╣рд╛рдВ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рджреЛ рддрд░реНрдХ рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕рдХреЗ рдХрд░реА рдФрд░ рдЖрдВрд╢рд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рд╕рдВрдпреЛрдЧ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдРрд╕рд╛ рдХрд╛рд░реНрдп рд╣реИ:

 function div(x,y) {   return x/y; } 

рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдореЗрдВ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рддрд╛рдХрд┐ рд╣рдо рдкрд╣рд▓реЗ рддрд░реНрдХ рдХреЛ рдареАрдХ рдХрд░ рд╕рдХреЗрдВ, рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдЬреЛ рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИ, рдЬрдм рдпрд╣ рдХреЗрд╡рд▓ рджреВрд╕рд░рд╛ рддрд░реНрдХ рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд рд╣рдореЗрдВ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:

 function div(x) {   return (y) => {       return x/y;   } } 

рдЗрд╕рдХреЗ рдХрд░реАрдиреЗ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдмрд┐рд▓реНрдХреБрд▓ рд╡реИрд╕рд╛ рд╣реА рджрд┐рдЦреЗрдЧрд╛ред

рдХрд░реА рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдЖрдВрд╢рд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреЗ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдкрд░


рд╡рд┐рднрд┐рдиреНрди рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдХрд░реА рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЖрдВрд╢рд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреБрди: рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдЫреЛрдЯреЗ рдореЙрдбреНрдпреВрд▓ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордпред

рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЖрдВрд╢рд┐рдХ рдЙрдкрдпреЛрдЧ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдСрдирд▓рд╛рдЗрди рд╕реНрдЯреЛрд░ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдХреЛрдб рдореЗрдВ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЫреВрдЯ рдХреА рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рднреБрдЧрддрд╛рди рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд░рд╛рд╢рд┐ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

 function discount(price, discount) {   return price * discount } 

рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреА рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╢реНрд░реЗрдгреА рд╣реИ, рдЪрд▓реЛ рдЙрдиреНрд╣реЗрдВ "рдкреНрд░рд┐рдп рдЧреНрд░рд╛рд╣рдХ" рдХрд╣рддреЗ рд╣реИрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдо 10% рдЫреВрдЯ рджреЗрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдРрд╕рд╛ рдЧреНрд░рд╛рд╣рдХ $ 500 рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЦрд░реАрджрддрд╛ рд╣реИ, рддреЛ рд╣рдо рдЙрд╕реЗ $ 50 рдХреА рдЫреВрдЯ рджреЗрддреЗ рд╣реИрдВ:

 const price = discount(500,0.10); // $50 // $500 - $50 = $450 

рдпрд╣ рджреЗрдЦрдирд╛ рдЖрд╕рд╛рди рд╣реИ рдХрд┐ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде, рд╣рдореЗрдВ рд▓рдЧрд╛рддрд╛рд░ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рджреЛ рддрд░реНрдХреЛрдВ рдХреЗ рд╕рд╛рде рдХреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:

 const price = discount(1500,0.10); // $150 // $1,500 - $150 = $1,350 const price = discount(2000,0.10); // $200 // $2,000 - $200 = $1,800 const price = discount(50,0.10); // $5 // $50 - $5 = $45 const price = discount(5000,0.10); // $500 // $5,000 - $500 = $4,500 const price = discount(300,0.10); // $30 // $300 - $30 = $270 

рдореВрд▓ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдПрдХ рдРрд╕реЗ рд░реВрдк рдореЗрдВ рдШрдЯрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдкреВрд░реНрд╡ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдЫреВрдЯ рд╕реНрддрд░ рдХреЗ рд╕рд╛рде рдирдП рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛, рдпрд╣ рдХреЙрд▓ рдХрд░рдиреЗ рдкрд░ рдХрд┐ рдпрд╣ рдЦрд░реАрдж рд░рд╛рд╢рд┐ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ discount() рдлрд╝рдВрдХреНрд╢рди рдХреЗ рджреЛ рддрд░реНрдХ рд╣реИрдВред рдпрд╣рд╛рдБ рдкрд░ рдпрд╣ рджрд┐рдЦрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕реЗ рдХрд┐рд╕ рд░реВрдк рдореЗрдВ рдмрджрд▓рддреЗ рд╣реИрдВ:

 function discount(discount) {   return (price) => {       return price * discount;   } } const tenPercentDiscount = discount(0.1); 

tenPercentDiscount() рдлрд╝рдВрдХреНрд╢рди discount() рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЖрдВрд╢рд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИред рдЬрдм рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ tenPercentDiscount() рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдореВрд▓реНрдп рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рдФрд░ 10% рдХреА discount , рдпрд╛рдиреА, discount рддрд░реНрдХ, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:

 tenPercentDiscount(500); // $50 // $500 - $50 = $450 

рдпрджрд┐ рд╣рдорд╛рд░реЗ рд╕реНрдЯреЛрд░ рдореЗрдВ рдЦрд░реАрджрд╛рд░ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ 20% рдХреА рдЫреВрдЯ рджреЗрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдЖрдк рдЙрдирдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдлрд╝рдВрдХреНрд╢рди рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 const twentyPercentDiscount = discount(0.2); 

рдЕрдм 20% рдЫреВрдЯ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП, рд╕рд╛рдорд╛рди рдХреА рд▓рд╛рдЧрдд рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП twentyPercentDiscount() рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

 twentyPercentDiscount(500); // 100 // $500 - $100 = $400 twentyPercentDiscount(5000); // 1000 // $5,000 - $1,000 = $4,000 twentyPercentDiscount(1000000); // 200000 // $1,000,000 - $200,000 = $600,000 

рдЕрдиреНрдп рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдЖрдВрд╢рд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рд▓рд┐рдП рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдХрд╛рд░реНрдп


рд╣рдо рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╡рд┐рдХрд╕рд┐рдд рдХрд░реЗрдВрдЧреЗ рдЬреЛ рдХрд┐рд╕реА рднреА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдХреБрдЫ рддрд░реНрдХ рдкрд╣рд▓реЗ рд╕реЗ рд╕реЗрдЯ рд╣реИрдВред рдпрд╣рд╛рдВ рд╡рд╣ рдХреЛрдб рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ (рдЖрдк, рдпрджрд┐ рдЖрдк рдПрдХ рд╕рдорд╛рди рдлрд╝рдВрдХреНрд╢рди рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рд╣реИрдВ, рддреЛ рдпрд╣ рдХрд╛рдлреА рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдХреБрдЫ рдФрд░ рдорд┐рд▓реЗрдЧрд╛):

 function partial(fn, ...args) {   return (..._arg) => {       return fn(...args, ..._arg);   } } 

partial() рдлрд╝рдВрдХреНрд╢рди fn рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рд╣рдо рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдФрд░ рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рдПрдХ рдЪрд░ рд╕рдВрдЦреНрдпрд╛ (...args )ред rest рд╡рд┐рд╡рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ fn рдмрд╛рдж рд╕рднреА рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ fn рдореЗрдВ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдПрдХ рдФрд░ рдлрд╝рдВрдХреНрд╢рди рджреЗрддрд╛ рд╣реИ рдЬреЛ рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рдПрдХ рдЪрд░ рд╕рдВрдЦреНрдпрд╛ ( _arg ) рдХреЛ рднреА рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдлрд╝рдВрдХреНрд╢рди, рдмрджрд▓реЗ рдореЗрдВ, рдореВрд▓ fn рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИ ...args рдФрд░ ..._arg ( spread рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ)ред рдлрд╝рдВрдХреНрд╢рди рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкрд░рд┐рдгрд╛рдо рджреЗрддрд╛ рд╣реИред

рдЖрдпрддрд╛рдХрд╛рд░ рд╕рдорд╛рдирд╛рдВрддрд░ рдЪрддреБрд░реНрднреБрдЬ рдХреА рдорд╛рддреНрд░рд╛ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдП рдЧрдП volume рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдПрдХ рдкреНрд░рдХрд╛рд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдПрдХ рдкрдХреНрд╖ рддрдп рд╣реЛ рдЧрдпрд╛ рд╣реИ:

 function volume(l,h,w) {   return l * h * w } const hV = partial(volume,100); hV(200,900); // 18000000 hV(70,60); // 420000 

рдпрд╣рд╛рдВ рдЖрдк рдЕрдиреНрдп рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдХрд╛рд░реНрдп рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдкрд░рд┐рдгрд╛рдо


рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдордиреЗ рдХрд░реА рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдЖрдВрд╢рд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреАред рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдпреЗ рддрд░реАрдХреЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдмрдВрдж рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рдЬреЗрдПрд╕ рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рдкреНрд░рдердо рд╢реНрд░реЗрдгреА рдХреА рд╡рд╕реНрддреБрдПрдВ рд╣реИрдВ (рдЙрдиреНрд╣реЗрдВ рдЕрдиреНрдп рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрдирдореЗрдВ рд╕реЗ рд▓реМрдЯрд╛рдпрд╛ рдЧрдпрд╛, рдЪрд░ рдХреЛ рд╕реМрдВрдкрд╛ рдЧрдпрд╛)ред

рдкреНрд░рд┐рдп рдкрд╛рдардХреЛрдВ! рдХреНрдпрд╛ рдЖрдк рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдХрд░реА рддрдХрдиреАрдХреЛрдВ рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдЖрдВрд╢рд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ?

Source: https://habr.com/ru/post/hi427295/


All Articles