/* 함수 선언식 */
function sum(a, b){
console.log(a + b);
}
sum(10, 20); //30
/* 함수 표현식 */
const sum = function(a, b){
console.log(a + b);
}
sum(10, 20); //30
/* 화살표 함수 */
const sum = (a,b) => a + b;
sum(10, 20); //30
function이라는 키워드 없이 arrow(=>)를 이용해 함수를 생성하는 방법
화살표 함수는 기본적으로 익명함수 이기 때문에
화살표 함수를 호출하기 위해서는 함수 표현식을 사용한다.
x => { return x * x }
x => x * x //명령어가 한줄 일 때 중괄호를 생략할 수 있으며 return도 생략 가능
x => {} // 매개변수가 없을 경우
(x, y) => {} //소괄호 생략 불가능
() => {} //소괄호 생략 불가능
() => ({ a:1 }) //객체 반환 시 소괄호 사용
일반 함수는 함수가 실행될 때 함수 자신의 스코프 안에 자기 자신인 this가 존재하지만
화살표 함수는 자신의 스코프 안에 this가 존재하지 않는다.
어떤 변수를 찾을 때 자기 scope내에 없으면 외부 상위 scope에 접근해 찾게 되는데
그렇기 때문에 화살표 함수에서의 this는 외부의 상위 스코프 this를 가리킨다.