함수란 무엇인가?
함수란 아래와 같이 다양한 해석이 가능하다.
- 코드의 묶음
- 기능의 단위
- 입력과 출력간의 매핑
여튼 간단하게 설명하자면, 커피콩을 넣으면 커피가 나오는 기구랄까..?
*매핑이란 용어가 종종 나오곤 하는데, 개인적으로 매핑의 뜻은 옛날에 구몬 학습지를 통해 했던 올바른 뜻 잇기 문제와 같다고 생각한다. (지극히 개인적인 생각입니다....)

함수의 구성
함수는 아래와 같은 구성으로 이루어져 있다.
keyword name parameter body
예를 들자면, 요롷다.
function fName (a,b) {
console.log(a+b)
}
함수 사용법
앞에서 말했듯이 함수는 커피머신과 같다.
커피머신을 사용하기 위해서는 1. 커피머신과 2. 작동버튼이 필요하듯이
함수도 선언과 호출을 통해 사용한다.
함수의 선언은 이미 위의 예제에서 다루었다.
function fName (a,b) {
console.log(a+b)
}
이렇게 기구를 만드는 것이 함수의 선언이라 한다. 이때의 a,b를 parameter라고 한다!
그렇다면 호출은?
말 그대로 작동을 시키는 것이다.
fName (a,b);
이때의 a,b를 argument라고 한다! 아주 쉽쥬?
함수 선언방법
함수의 선언은 세가지 방법이 있다.
1. 함수 선언식
function functionName(a,b) {};
2. 함수 표현식
const functionName = function (a,b) {};
3. 화살표 함수
const functionName = (a,b) => {};
그런데 요 화살표 함수란 놈이 조금 까다롭다.
일단 위의 두 함수 선언식이 있는데 왜 화살표 함수를 사용하는 걸까?
Arrow functions, introduced in ES6,
provides a concise way to write functions in JavaScript
ES6에서 적용된 화살표 함수는 자바스크립트를 간결하게 작성할 수 있도록 한다.
실제로 다른 선언방식에 비해 간결하기는 하다.
근데 외울게 더 늘어나 언짢.....
화살표 함수의 사용방법은 아래와 같다.
1. 함수의 본문에 return만 있으면 return을 생략할 수 있다. 이때 중괄호(curly bracket)은 생략해야 한다.
const functionName = (a,b) => a+b a+b 리턴
const functionName = (a,b) => {a+b} undefined 리턴
2. 소괄호는 괜찮다.
const functionName = (a,b) => (a+b) a+b 리턴