ЁЯФз Pure Function Interactive Demo

рдЬреЗрдард╛рд▓рд╛рд▓ рдФрд░ рдмрдмрд┐рддрд╛ рдХреЗ рд╕рд╛рде рд╕рдордЭреЗрдВ Pure Functions

B
рдмрдмрд┐рддрд╛: рдЬреЗрдард╛рдЬреА, рдЖрдкрдиреЗ рдХрд╣рд╛ рдерд╛ рдХрд┐ pure function рд╣рд░ рдмрд╛рд░ same output рджреЗрддрд╛ рд╣реИтАж рдкрд░ рдРрд╕рд╛ function рдмрдирддрд╛ рдХреИрд╕реЗ рд╣реИ?
J
рдЬреЗрдард╛рд▓рд╛рд▓: рджреЗрдЦрд┐рдП рдмрдмрд┐рддрд╛ рдЬреА, рдХреЛрдИ рднреА function pure рддрднреА рд╣реЛрдЧрд╛ рдЬрдм: Same input рдкрд░ рд╣рдореЗрд╢рд╛ same output рджреЗ, рдФрд░ рдмрд╛рд╣рд░ рдХреА рджреБрдирд┐рдпрд╛ рдореЗрдВ рдХреЛрдИ рдмрджрд▓рд╛рд╡ рдирд╛ рдХрд░реЗ тАФ рдорддрд▓рдм рдХреЛрдИ file, database рдпрд╛ global variable рдирд╛ рдЫреБрдПред
ЁЯОп Pure vs Impure Function Examples

тЬЕ Pure Function

function add(a, b) { return a + b; } // рд╣рдореЗрд╢рд╛ predictable result add(2, 3); // рд╣рдореЗрд╢рд╛ 5 add(2, 3); // рд╣рдореЗрд╢рд╛ 5

рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ: Same input = Same output, No side effects

тЭМ Impure Function

let bonus = 2; function getSalary(base) { return base + bonus; } // Unpredictable result getSalary(100); // 102 рдпрд╛ рдХреБрдЫ рдФрд░?

рд╕рдорд╕реНрдпрд╛: External variable рдкрд░ depend, Unpredictable output

ЁЯзк Pure Function рдХреЛ Test рдХрд░реЗрдВ
Result will appear here...
Result will appear here...

ЁЯУК Test History (Pure Function рдХреА Consistency рджреЗрдЦреЗрдВ)

ЁЯУЛ Pure vs Impure Functions Comparison
Property Pure Function Impure Function
Predictability тЬЕ рд╣рдореЗрд╢рд╛ same result тЭМ Result рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ
Side Effects тЬЕ рдХреЛрдИ side effect рдирд╣реАрдВ тЭМ External state рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ
Testing тЬЕ рдЖрд╕рд╛рди testing тЭМ Complex testing
Debugging тЬЕ рдЖрд╕рд╛рди debugging тЭМ Difficult debugging
Parallelization тЬЕ Safe for parallel execution тЭМ Race conditions possible