Pure Functions In Javascript - Lee-hyuna/33-js-concepts-kr GitHub Wiki
Pure Functions In Javascript
λ²μ : https://appdividend.com/2017/04/10/pure-functions-in-javascript/
Javascriptμ μμ ν¨μλ νΈμΆ μκ°μ μ λ¬ λ λ§€κ° λ³μλ‘ λ°ν κ°μ΄ κ²°μ λλ μΌμ’ μ ν¨μμ λλ€.
Javascriptλ μμ ν κΈ°λ₯μ μΈ μΈμ΄κ° μλλλ€. ν¨μλ₯Ό κ°μ²΄ (first-class function)λ‘ μ·¨κΈν©λλ€.
ν¨μμ μ λ ₯ λ§€κ° λ³μ κ°μ μ 곡νκ³ νμ λμΌν κ²°κ³Όλ₯Ό λ°ννλ©΄ μλ° μ€ν¬λ¦½νΈμ μμ ν¨μ κ°λ©λλ€.
Pure Functions
μμ ν¨μ νλ‘κ·Έλλ° κ°λ μμ΄ λ μ격ν ν¨μ νλ‘κ·Έλλ° μΈμ΄μμ νμλ©λλ€.
μμ ν¨μ νΉμ Ajax νΈμΆ λλ λͺ¨λ λ°μ΄ν°λ² μ΄μ€ νΈμΆ μλ§ μμ‘΄νμ§ μμ΅λλ€. λ¨μν λ§€κ° λ³μλ₯Ό μ·¨νκ³ ν¨μ λ³Έλ¬Έμμ μΌλΆ κ³μ°μ μννκ³ μ΄λ₯Ό λ°νν©λλ€.
μΈμμ λ°λΌ μ μ μΌλ‘ ν¨μ νΈμΆμ μ λ¬ν©λλ€ .
μ λ ₯ κ°μ μΆλ ₯ κ°μ 맀νν©λλ€.
μ΄ νλ‘κ·Έλλ° μ€νμΌμ νλ‘ μμ νλ‘κ·Έλλ° μ΄λΌκ³ λΆλ₯Ό μ μμ΅λλ€. μ΄λ ν΄λΉ ν¨μμ λν μ λ ₯μ λν΄ μνλλ μΌλ ¨μ μ°μ°μ΄κΈ° λλ¬Έμ λλ€.
ν¨μλ ν΄λΉ ν¨μλ‘ μ λ¬λλ λ³μμλ§ λ§€κ° λ³μλ‘ μ‘μΈμ€ ν μ μμ΅λλ€ .
μ μ λ³μ λλ ν΄λμ€μ μΈμ€ν΄μ€λ μμ ν¨μ λ΄μμ ν©λ²μ μΈ λ³μλ‘ κ°μ£Όλμ§ μμ΅λλ€.
λ³μμ μ μ λ²μλ μμ ν¨μμ μμ±μ μ¬μ©λμ§ μμ΅λλ€.
μν ν¨μλ‘ μλνλ λͺ λ Ή μ§ν©μ λλ€.
μ΄ ν¨μλ μν κΈ°λ° ν¨μλ‘ μΈμλ₯Ό μ·¨νκ³ ν΄λΉ λ³μμ λν μ°μ°μ μν ν λ€μ λ°νν©λλ€.
Advantages:
- μ£Όμ΄μ§ ν¨μμ κ²°κ³Όλ₯Ό νμ μμΈ‘ν μ μμ΅λλ€.
- ν μ€νΈλ νμ μ΄ν λ²μ λ°μμλ λ³μμ μνλ₯Ό λ³κ²½νμ§ μκΈ° λλ¬Έμ μ½μ΅λλ€.
- κΈ°λ₯μ νλ‘κ·Έλλ°μ μ½λ λΌμΈμ μ€μ΄κ³ κ±°μ 루νλ₯Ό μ κ±°ν©λλ€.
Examples:
//main.js
let pure = (y) => {
let x = 10;
x = x + y;
return x;
};
let y = pure(3);
console.log(y); // 13
let z = pure(3);
console.log(z); // 13
** λΈλΌμ°μ μμ μ§μ μμ μ½λλ₯Ό μ€ννλ©΄ λ€μ λ¬Έμ κ° λ°μν μ μμ΅λλ€. **
Possible Errors
- You can get any syntax error.
- If you perform code directly in your browser, then chances are very high to fail the webpack compilation process.
Possible Solutions
- **Beginnerβs Guide To Setup ES6 Development Environmentμ΄ λ¬Έμλ₯Ό μ격ν μ€μνκ³ main.js νμΌμ μ½λλ₯Ό μΆκ°νμμμ€.
μμ μμμ ν¨μμ νΈμΆ μκ°μ λ§€λ² λ§€κ° λ³μλ₯Ό 3μΌλ‘ μ λ¬νλ©΄ νμ λͺ¨λ μν©μμ 13μ λ°νν©λλ€. κ·Έλμ μμν μλ° μ€ν¬λ¦½νΈ κΈ°λ₯μ λλ€.
μλ° μ€ν¬λ¦½νΈμμ μ«μ, λ¬Έμμ΄ λ° λΆμΈκ³Ό κ°μ κ°λ¨ν λ³μλ λ³κ²½ν μ μμ΅λλ€. κ·Έλ¬λ κ°μ²΄ λ° λ°°μ΄κ³Ό κ°μ λ°μ΄ν° ꡬ쑰λ λ°μ΄ν° λͺ¨μμ΄λ―λ‘ λ³κ²½ν μ μμ΅λλ€ .
//main.js
const numbers = [1, 2, 3];
numbers.forEach(x => console.log(x)); //1 2 3
Arrays and Objects λ non-primitive λ°μ΄ν° μ νμ΄λ―λ‘ λ³ν λ μ μμ΅λλ€.
μμ μμ λ νλμ λ°°μ΄μμλ μμμ κ°μ νλμ© μΆλ ₯ν©λλ€. κ·Έλμ μμν μλ° μ€ν¬λ¦½νΈ ν¨μμ λλ€.
Example #1
//main.js
let arr = [1, 2, 3, 4, 5, 6];
even = arr.filter(function (element) {
return element%2 === 0;
});
console.log(even); //[2,4,6]
λ°°μ΄μ μ΄μ μνλ₯Ό λ³κ²½νμ§ μμΌλ©΄ μμ ν¨μλΌκ³ λν©λλ€.
μμ μμμ Filter ν¨μλ 쑰건μ κ²μ¬νκ³ λ§μ‘± μ€λ¬μ΄μ§ μ¬λΆλ₯Ό νμΈν©λλ€. μ λ°°μ΄ μ§ν©μ λ°νν©λλ€.
Example #2
//main.js
let dances = [
{name: 'Krunal', type: 'Robot'},
{name: 'Ankit', type: 'Salsa'},
{name: 'Tom', type: 'Garba'},
{name: 'Jerry', type: 'Belly'}
];
let collection = dances.filter((dance)=>{
return dance.type === 'Robot'
});
console.log(collection); // [object]