АБ
Size: a a a
АБ
🚀🚀
OR
🚀🚀
🚀🚀
OR
ф
🚀🚀
🚀🚀
🚀🚀
OR
🚀🚀
🚀🚀
🚀🚀
🚀🚀
🚀🚀
NF
a: {x: 1}
- контекст, не меняется; b => a.x + b.x
- зависит от b
который параметр:const add = a => b => a.x + b.x
const add1 = add({x: 1})
Add2 не чистая функция, т.к. b => a.x + b.x не детерменирована в контексте 'a'
const add2 = add({
get x() {return Math.random()}
})
Add3
чистая функция, т.к. детерменирована без сайд эффектов, т.к. контекст имутабеленconst add3 = (() => {
const x = 0
return add({
get x() {return x}
})
})()
Add4
чистая функция, однако x
чистой функцией не являетсяconst add4 = (() => {
let x = 0
return add({
get x() {
x += 1
return 5
}
})
})()
Ну и ещё примеры:(x) => x // чистая функция, даже если агрумент мутабелен
let i = 0
f = (x) => (y) => x + y + i // 'f = (x) => ' - чистая функция, `(y) =>` - не чистая, но не из-за замыкания на x, если x имутабелен
while(true) { i++ }
class Z {
ctor(privete y): Z;
f = (x) => this.y;
}
const i = 0;
f =(x) => x + i
let i = 0;
f =(x) => x + i
let i = 0;
f =(x) => x + i++
let i = 0;
f =(x) => x + i
// где-то далее делается i++
🚀🚀
const pureAddTrustMe = n => {
if (add5.getState() === 5)
throw Error('whatever')
return add5.add5(n)
}
🚀🚀
a: {x: 1}
- контекст, не меняется; b => a.x + b.x
- зависит от b
который параметр:const add = a => b => a.x + b.x
const add1 = add({x: 1})
Add2 не чистая функция, т.к. b => a.x + b.x не детерменирована в контексте 'a'
const add2 = add({
get x() {return Math.random()}
})
Add3
чистая функция, т.к. детерменирована без сайд эффектов, т.к. контекст имутабеленconst add3 = (() => {
const x = 0
return add({
get x() {return x}
})
})()
Add4
чистая функция, однако x
чистой функцией не являетсяconst add4 = (() => {
let x = 0
return add({
get x() {
x += 1
return 5
}
})
})()
Ну и ещё примеры:(x) => x // чистая функция, даже если агрумент мутабелен
let i = 0
f = (x) => (y) => x + y + i // 'f = (x) => ' - чистая функция, `(y) =>` - не чистая, но не из-за замыкания на x, если x имутабелен
while(true) { i++ }
class Z {
ctor(privete y): Z;
f = (x) => this.y;
}
const i = 0;
f =(x) => x + i
let i = 0;
f =(x) => x + i
let i = 0;
f =(x) => x + i++
let i = 0;
f =(x) => x + i
// где-то далее делается i++
NF