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 |