Skip to content

Instantly share code, notes, and snippets.

@duncan60
Created January 2, 2016 10:28
Show Gist options
  • Save duncan60/d155a7db288b58408c9b to your computer and use it in GitHub Desktop.
Save duncan60/d155a7db288b58408c9b to your computer and use it in GitHub Desktop.
pure function
let player = {
name : '',
state : '',
level : '',
height: 0,
age : 0,
point : 0
};
//impure
let impureUpdate = (name, age, height, point) => {
let newPlayer = {
name : name,
state : age > 30 ? 'senior' : 'rookie',
level : point > 300 ? 'A' : 'B',
height: height,
age : age,
point : point
}
player = newPlayer;
}
impureUpdate('kobe', 20, 190, 100);
console.log('impureUpdate:', player);
/*
console log
impureUpdate: {
"name":"kobe",
"state":"rookie",
"level":"B",
"height":190,
"age":20,
"point":100
}
*/
//pure
let pureUpdate = (old, latest) => {
return {
...old,
...latest
}
};
let updateAgeAndState = (age) => {
let state = age > 30 ? 'senior' : 'rookie';
return {
age,
state
};
};
let updatePointAndLevel = (point) => {
let level = point > 300 ? 'A' : 'B';
return {
point,
level
};
};
player = pureUpdate(player, {
name : 'jordan',
height: 198,
...updateAgeAndState(32),
...updatePointAndLevel(350)
});
console.log('pureUpdate:', player);
/*
console log
pureUpdate: {
"name":"jordan",
"state":"senior",
"level":"A",
"height":198,
"age":32,
"point":350
}
*/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment