рдЬреЗрдПрд╕ рдореЗрдВ рдЙрдЪреНрдЪ рдЖрджреЗрд╢ рдХрд╛рд░реНрдп: рдпрдВрдЧ рдлрд╛рдЗрдЯрд░ рдХреЛрд░реНрд╕

рдпрд╣ рд▓реЗрдЦ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реАрдЦрдиреЗ рдХреЗ рдХрд╛рдВрдЯреЗрджрд╛рд░ рд░рд╛рд╕реНрддреЗ рдкрд░ рдЕрдкрдиреЗ рдкрд╣рд▓реЗ рдбрд░рдкреЛрдХ рдХрджрдо рдЙрдард╛рдиреЗ рд╡рд╛рд▓реЗ рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рдЕрднрд┐рдкреНрд░реЗрдд рд╣реИред рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ 2018 рдореЗрдВ, рдореИрдВ рдИрдПрд╕ 5 рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рддрд╛рдХрд┐ рдПрдЪрдЯреАрдПрдордПрд▓ рдЕрдХрд╛рджрдореА рдореЗрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓реЗрд╡рд▓ 1 рдкрд╛рдареНрдпрдХреНрд░рдо рд▓реЗрдиреЗ рд╡рд╛рд▓реЗ рдпреБрд╡рд╛ рдкрдбрд╛рд╡реЛрдВ рджреНрд╡рд╛рд░рд╛ рд▓реЗрдЦ рдХреЛ рд╕рдордЭрд╛ рдЬрд╛ рд╕рдХреЗред

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

function hello(){}; function world(){}; console.log(hello + world); //  ,  ,   //   ,     

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

рдкрд╛рдЗрдкрд▓рд╛рдЗрди


рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдРрд╕реА рдЪреАрдЬ рд╣реИ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЖрдкрдХреЛ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЯреБрдХрдбрд╝реЗ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдорд╛рди рд▓реЗрдВ рдХрд┐ рдХрд┐рд╕реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рдПрдХ рдЯреЗрдХреНрд╕реНрдЯ рдлрд╝рд╛рдЗрд▓ рдЕрдкрд▓реЛрдб рдХреА рд╣реИ рдЬреЛ JSON рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреА рд╣реИ, рдФрд░ рд╣рдо рдЗрд╕рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рд╡реНрд╣рд╛рдЯреНрд╕рдПрдк рдкрд╛рддреНрд░реЛрдВ рдХреЛ рдЯреНрд░рд┐рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдпрд╛ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдХрд┐рдирд╛рд░реЛрдВ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ "рд╡рд┐рдХрд╕рд┐рдд" рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдлрд┐рд░ рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдкрд╛рда рдореЗрдВ рдХреЛрдИ рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рдХреЛрдб рдирд╣реАрдВ рд╣реИ (рдЬреЛ рдЬрд╛рдирддрд╛ рд╣реИ, рдпреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣реИрдВ)ред рдлрд┐рд░ JSON.parse рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЯреЗрдХреНрд╕реНрдЯ рд╕реЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ JSON.parse ред рдлрд┐рд░ рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рд╣рдЯрд╛ рджреЗрдВред рдФрд░ рдЕрдВрдд рдореЗрдВ - рдЗрд╕ рдбреЗрдЯрд╛ рдХреЛ рд╕рд░реНрд╡рд░ рдкрд░ рднреЗрдЬреЗрдВред рдЖрдкрдХреЛ рдРрд╕рд╛ рдХреБрдЫ рдорд┐рд▓рддрд╛ рд╣реИ:

 function trim(){/*  */}; function sanitize(){/*  */}; function parse(){/*  */}; function extractData(){/*  */}; function send(){/*  */}; var textFromFile = getTextFromFile(); send(extractData(parse(sanitize(trim(testFromFile)))); 

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рд╣рдордд рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдкрдиреЗ рд╢рд╛рдпрдж рдпрд╣ рдирд╣реАрдВ рджреЗрдЦрд╛ рдХрд┐ рдПрдХ рд▓рд╛рдкрддрд╛ рдХреНрд▓реЛрдЬрд┐рдВрдЧ рдмреНрд░реИрдХреЗрдЯ рд╣реИред рдмреЗрд╢рдХ, рдЖрдИрдбреАрдИ рдЖрдкрдХреЛ рдпрд╣ рдмрддрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИред рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдирдпрд╛ рдСрдкрд░реЗрдЯрд░ |> рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рдирдпрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рднрд╛рд╖рд╛рдУрдВ рд╕реЗ рдЙрдзрд╛рд░ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдмрд╛рдд рдирд╣реАрдВ рд╣реИред рдЗрд╕ рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдЕрдВрддрд┐рдо рдкрдВрдХреНрддрд┐ рдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

 textFromFile |> trim |> sanitize |> parse |> extractData |> send; 

|>> рдСрдкрд░реЗрдЯрд░ рдЕрдкрдиреЗ рд▓реЗрдлреНрдЯ рдСрдкрд░реЗрдВрдб рдХреЛ рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдЙрд╕реЗ рдПрдХ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд░рд╛рдЗрдЯ рдСрдкрд░реЗрдВрдб рдореЗрдВ рднреЗрдЬрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, "Hello" |> console.log console.log("Hello") рдмрд░рд╛рдмрд░ рд╣реИред рдпрд╣ рдЙрди рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ рдЬрдм рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд╕рд╛рде рдХрдИ рдХрд╛рд░реНрдп рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕ рдСрдкрд░реЗрдЯрд░ рдХреА рд╢реБрд░реБрдЖрдд рд╕реЗ рдкрд╣рд▓реЗ, рдмрд╣реБрдд рд╕рдордп рдмреАрдд рдЬрд╛рдПрдЧрд╛ (рдпрджрд┐ рдпрд╣ рдкреНрд░рд╕реНрддрд╛рд╡ рдмрд┐рд▓реНрдХреБрд▓ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ), рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдЕрдм рдХрд┐рд╕реА рддрд░рд╣ рдЬреАрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдЕрдкрдиреА рдмрд╛рдЗрдХ рдХреЛ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдЕрдиреБрдХрд░рдг рдХрд░рддрд╛ рд╣реИ:

 function pipe(){ var args = Array.from(arguments); var result = args.shift(); while(args.length){ var f = args.shift(); result = f(result); } return result; } pipe( textFromFile, trim, sanitize, parse, extractData, send ); 

рдпрджрд┐ рдЖрдк рдПрдХ рдиреМрд╕рд┐рдЦрд┐рдпрд╛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ (рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ? рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ?) рд╣реИрдВ, рддреЛ рдлрд╝рдВрдХреНрд╢рди рдХреА рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдЖрдкрдХреЗ рд▓рд┐рдП рд╕рдордЭ рд╕реЗ рдмрд╛рд╣рд░ рд╣реЛ рд╕рдХрддреА рд╣реИред рдпрд╣ рд╕рд░рд▓ рд╣реИ: рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░, рд╣рдо рдПрдХ рдЕрд░реИ-рд▓рд╛рдЗрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддрд░реНрдХреЛрдВ рдХреЗ рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рджрд┐рдП рдЧрдП рд╕рднреА рддрд░реНрдХреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ рдЬрдм рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдХрд┐ рдЙрд╕рдХреЗ рдкрд╛рд╕ рдХрд┐рддрдиреЗ рддрд░реНрдХ рд╣реЛрдВрдЧреЗред рдПрдХ рд╡рд┐рд╢рд╛рд▓ рд╡рд╕реНрддреБ рдПрдХ рд╕рд░рдгреА рдХреА рддрд░рд╣ рд╣реИ, рд▓реЗрдХрд┐рди рдХрд╛рдлреА рдирд╣реАрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдЗрд╕реЗ Array.from рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╕рд░рдгреА рдореЗрдВ Array.from рдХрд░рддреЗ рд╣реИрдВред рдЖрдЧреЗ рдХреЛрдб, рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд╛рдлреА рдкрдардиреАрдп рд╣реИ: рд╣рдо рд╕рд░рдгреА рд╕реЗ рддрддреНрд╡реЛрдВ рдХреЛ рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдПрдВ рд╕реЗ рджрд╛рдПрдВ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рдПрдХ рджреВрд╕рд░реЗ рдкрд░ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ рдЬреИрд╕реЗ рдХрд┐>> рдСрдкрд░реЗрдЯрд░ рдХрд░реЗрдЧрд╛ред

рд▓реЙрдЧрд┐рдВрдЧ


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

рдмреЗрд╢рдХ, рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХреЗ рд╕рд╛рде, рд╣рдо рдЗрд╕реЗ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ:

 var result = f(a, b); console.log(" f     " + a + "  " + b + "   " + result); console.log(" : " + Date.now()); 

рд▓реЗрдХрд┐рди, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рдмрд▓реНрдХрд┐ рдмреЛрдЭрд┐рд▓ рд╣реИред рдФрд░ рджреВрд╕рд░реА рдмрд╛рдд, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИред рдПрдХ рджрд┐рди рд╣рдо рдмрд╕ f(a, b) рд▓рд┐рдЦреЗрдВрдЧреЗ, рдФрд░ рддрдм рд╕реЗ рдЕрдЬреНрдЮрд╛рди рдХрд╛ рдЕрдВрдзреЗрд░рд╛ рд╣рдорд╛рд░реЗ рджрд┐рдорд╛рдЧ рдореЗрдВ рдмрд╕ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рдкреНрд░рддреНрдпреЗрдХ рдирдИ рдЪреБрдиреМрддреА рдХреЗ рд╕рд╛рде рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реЗрдЧрд╛, рдЬрд┐рдирдореЗрдВ рд╕реЗ рд╣рдо рдХреБрдЫ рднреА рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВред

рдЖрджрд░реНрд╢ рд░реВрдк рдореЗрдВ, рдореИрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд▓реЙрдЧрд┐рдВрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рддрд╛рдХрд┐ рд╣рд░ рдмрд╛рд░ рдЬрдм рдЖрдк f рдХреЙрд▓ рдХрд░реЗрдВ, рддреЛ рд╣рдореЗрдВ рдЬреЛ рдХреБрдЫ рднреА рдЪрд╛рд╣рд┐рдП рд╡рд╣ рд╕рдм рдХрдВрд╕реЛрд▓ рдХреЛ рд▓рд┐рдЦрд╛ рдЬрд╛рдПред рдФрд░, рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИред рдирдП рдЙрдЪреНрдЪ рдЖрджреЗрд╢ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдкреВрд░рд╛ рдХрд░реЗрдВ!

 function addLogger(f){ return function(){ var args = Array.from(arguments); var result = f.apply(null, args); console.log(" " + f.name + "     " + args.join() + "    " + result + "\n" + " : " + Date.now()); return result; } } function sum(a, b){ return a + b; } var sumWithLogging = addLogger(sum); sum(1, 2); //   sumWithLogging(1, 2) //  

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

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

рдЖрдЗрдВрд╕, рдЬрд╝реЗрд╡реА, рдбреНрд░реЗрдИ, рд╡реАрд░ ...


рдФрд░ рдПрдХ рдФрд░ рдХрд╛рд░реНрдп рдЕрднреНрдпрд╛рд╕ рдХреЗ рдХрд░реАрдмред рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдореЗрдВ рдХреБрдЫ рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЛ рд╕рдВрдЦреНрдпрд╛ рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рд░ рдмрд╛рд░ рдПрдХ рдирдИ рдЗрдХрд╛рдИ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ, рд╣рдо рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдирдВрдмрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдкрд┐рдЫрд▓реЗ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдлреЙрд░реНрдо рдХрд╛ рдПрдХ рдХрд╛рд░реНрдп рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ:

 var lastNumber = 0; function getNewNumber(){ return lastNumber++; } 

рдФрд░ рдлрд┐рд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдирдИ рддрд░рд╣ рдХреА рдЗрдХрд╛рдИ рд╣реИред рдХрд╣рддреЗ рд╣реИрдВ, рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдордиреЗ рдмрдиреНрдиреА рдХреЛ рдЧрд┐рдирд╛ рдерд╛, рдФрд░ рдЕрдм рдЦрд░рдЧреЛрд╢ рднреА рд╣реИрдВред рдпрджрд┐ рдЖрдк рдЙрди рдФрд░ рдЕрдиреНрдп рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЦрд░рдЧреЛрд╢реЛрдВ рдХреЛ рдЬрд╛рд░реА рдХрд┐рдП рдЧрдП рдкреНрд░рддреНрдпреЗрдХ рдирдВрдмрд░ рдХреЛ рдмрдиреНрдиреАрдЬрд╝ рдХреЛ рдЬрд╛рд░реА рдХрд┐рдП рдЧрдП рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдПрдХ "рдЫреЗрдж" рдмрдирд╛ рджреЗрдЧрд╛ред рддреЛ, рд╣рдореЗрдВ рджреВрд╕рд░реЗ рдлрд╝рдВрдХреНрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рджреВрд╕рд░рд╛ рдЪрд░:

 var lastHareNumber = 0; function getNewHareNumber(){ return lastHareNumber++; } var lastRabbitNumber = 0; function getNewRabbitNumber(){ return lastRabbitNumber++; } 

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

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

 var numberGenerator = new NumberGenerator(); var n = numberGenerator.get(); 

рдЬрд┐рд╕ рдкрд░ рдореИрдВ рдЙрддреНрддрд░ рджреВрдВрдЧрд╛:
- рдИрдорд╛рдирджрд╛рд░ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЖрдкрд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕рд╣рдордд рд╣реВрдВред рдФрд░ рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдпрд╣ рдПрдХ рдЕрдзрд┐рдХ рд╕рд╣реА рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИ рдЬреЛ рдореИрдВ рдЕрдм рдкреЗрд╢ рдХрд░реВрдВрдЧрд╛ред рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд▓реЗрдЦ рд╣реИ, рдУрдУрдкреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВред рддреЛ рдХреНрдпрд╛ рдЖрдк рдереЛрдбрд╝реА рджреЗрд░ рдЪреБрдк рд░рд╣ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдореБрдЭреЗ рдЦрддреНрдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рдпрд╣рд╛рдБ (рдЖрд╢реНрдЪрд░реНрдп!) рдЙрдЪреНрдЪ рдХреНрд░рдо рдлрд╝рдВрдХреНрд╢рди рд╣рдореЗрдВ рдлрд┐рд░ рд╕реЗ рдорджрдж рдХрд░реЗрдЧрд╛ред

 function createNumberGenerator(){ var n = 0; return function(){ return n++; } } var getNewHareNumber = createNumberGenerator(); var getNewRabbitNumber = createNumberGenerator(); console.log( getNewHareNumber(), getNewHareNumber(), getNewHareNumber(), getNewRabbitNumber(), getNewRabbitNumber(), ); //    0, 1, 2, 0, 1 

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

рд╣рд░ рдмрд╛рд░ createNumberGenerator рдлрд╝рдВрдХреНрд╢рди рдХреЛ createNumberGenerator , JS рджреБрднрд╛рд╖рд┐рдпрд╛ рдПрдХ рдЬрд╛рджреБрдИ рдЪреАрдЬрд╝ рдмрдирд╛рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ "рдирд┐рд╖реНрдкрд╛рджрди рд╕рдВрджрд░реНрдн" рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдореЛрдЯреЗ рддреМрд░ рдкрд░, рдпрд╣ рдПрдХ рдРрд╕реА рд╡рд╕реНрддреБ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдШреЛрд╖рд┐рдд рд╕рднреА рдЪрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рд╣рдо рдЗрд╕реЗ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХреНрд╕реЗрд╕ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдпрд╣ рд╣реИред

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

рдЗрд╕ рдкреНрд░рдХрд╛рд░, createNumberGenerator рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдП рдЧрдП createNumberGenerator рдХреА рд╣рдореЗрд╢рд╛ рд╡реИрд░рд┐рдПрдмрд▓ n рдХреА рдЕрдкрдиреА рдкреНрд░рддрд┐ рддрдХ рдкрд╣реБрдВрдЪ рд╣реЛрдЧреАред рдЖрдк рдЗрд╕реЗ рдбреА рдПрдВрдб рдбреА рд╕реЗ рдмреИрдЧ рдХреА рд╣реЛрд▓реНрдбрд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдк рдЕрдкрдиреЗ рдмреИрдЧ рдореЗрдВ рдЕрдкрдирд╛ рд╣рд╛рде рдбрд╛рд▓рддреЗ рд╣реИрдВ рдФрд░ рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдПрдХ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЕрдВрддрд░-рдЖрдпрд╛рдореА "рдкреЙрдХреЗрдЯ" рдореЗрдВ рдкрд╛рддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдБ рдЖрдк рдЕрдкрдиреА рдЗрдЪреНрдЫрд╛рдиреБрд╕рд╛рд░ рд╕рдм рдХреБрдЫ рд╕реНрдЯреЛрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

debounce


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

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

 function debounce(f, delay){ var lastTimeout; return function(){ if(lastTimeout){ clearTimeout(lastTimeout); } var args = Array.from(arguments); lastTimeout = setTimeout(function(){ f.apply(null, args); }, delay); } } function sacrifice(name){ console.log(name + "     * *"); } function sacrificeDebounced = debounce(sacrifice, 500); sacrificeDebounced(""); sacrificeDebounced(""); sacrificeDebounced(""); 

рдЖрдзреЗ рд╕реЗрдХреЗрдВрдб рдореЗрдВ рд▓реАрдирд╛ рдХреА рдмрд▓рд┐ рджреЗ рджреА рдЬрд╛рдПрдЧреА, рдФрд░ рдХрдЯрд┐рдпрд╛ рдФрд░ рд╕реНрд╡реЗрддрд╛ рд╣рдорд╛рд░реЗ рдЬрд╛рджреБрдИ рд╕рдорд╛рд░реЛрд╣ рдХреА рдмрджреМрд▓рдд рдмрдЪ рдЬрд╛рдПрдВрдЧреЗред

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

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

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


All Articles