순수함수는, 함수의 입력한 값 만이 함수의 영향을 끼치는 함수를 말한다. 다르게 말해보자면, 다른 값이 개입된다면, 그것은 순수함수가 아닌 것이다.
예를 들어서
function multiply (a, b){
return a * b
};
이러한 곱하기 함수를 만들었다고 쳤을때, 위는 순수함수일까?
순수함수가 맞다. 언제, 어디서 실행해도 매개변수에 일정한 값을 넣었을때, 항상 값은 값을 리턴한다.
그러면
Math.random();
Math.random()은 순수함수일까?
Math.random()은 순수함수가 아니다. 실행할 때 마다 다른 값을 출력하기 때문이다.
구조 분해 할당에 대한 설명은 MDN 구조분해할당에 잘 나와있지만, 짧게 보여주는 형식으로 작성해 보겠다.
const obj = {
name: {
first: "Hong",
second: "Gildong"
},
ability: ["Chukjibeop", "Martial Arts", "Sword Master"]
};
이러한 객체가 있을때 만약 구조 분해 할당을 하지 않고, name과 ability를 가져오려고한다면
const name = obj.name;
const ability = obj.ability;
console.log(name); // {first: "Hong", second: "Gildong"}
console.log(ability); // ["Chukjibeop", "Martial Arts", "Sword Master"]
이런식으로 작성해야 할 것이다.
그런데 구조 분해 할당을 이용하면 아래 처럼 한 문자로 받아서 할당까지 할수 있다.
const { name, ability } = obj;
console.log(name); // {first: "Hong", second: "Gildong"}
console.log(ability); // ["Chukjibeop", "Martial Arts", "Sword Master"]
이런식으로 말이다.
객체 말고도 배열에 구조분해 할당을 사용할 수도 있다.
const arr = [0, 1, 2, 3, 4, 5];
const [y, x, ...z] = arr;
console.log(x); // 1
console.log(y); // 2
console.log(z); // [2, 3, 4, 5]
이런식으로 말이다.