안녕하세요!
이번 포스팅 에서는 Javascript
사용 되는 함수 선언에 대해 알아보도록 하겠습니다.
그 중 에서도, ES6
버전에 새로 추가된 화살표 함수(Arrow Function)
과 기존의 일반 함수(Function)
에 대한 차이점을 알아 보도록 하겠습니다!😄
화살표 함수(Arrow Function).
- 화살표 함수는 function 키워드 대신 화살표(=>)를 사용하여 간략한 방법으로 함수를 선언 할 수 있습니다.
- 하지만 모든 경우 화살표 함수를 사용할 수 있는 것은 아닙니다. 그 이유는 아래의 차이점을 확인 하시면 됩니다.
1. 화살표 함수 선언
// 1. 매개변수 지정 방법
() => { ... } // 매개변수가 없을 경우
x => { ... } // 매개변수가 한 개인 경우, 소괄호를 생략할 수 있다.
(x, y) => { ... } // 매개변수가 여러 개인 경우, 소괄호를 생략할 수 없다.
// 함수 몸체 지정 방법
x => { return x * x } // single line block
x => x * x // 함수 몸체가 한줄의 구문이라면 중괄호를 생략할 수 있으며 암묵적으로 return된다. 위 표현과 동일하다.
() => { return { a: 1 }; }
() => ({ a: 1 }) // 위 표현과 동일하다. 객체 반환시 소괄호를 사용한다.
() => { // multi line block.
const x = 10;
return x * x;
};
2. 화살표 함수 호출
- 화살표 함수는 익명 함수로만 사용할 수 있습니다. 따라서 화살표 함수를 호출하기 위해서는 함수 표현식을 사용합니다.
- ES5 버전
var pow = function (x) { return x * x; };
console.log(pow(10)); // 100
- ES6 버전
const pow = x => x * x;
console.log(pow(10)); // 100
- 또는, 콜백 함수로 사용할 수 있습니다. 이 경우 일반적인 함수 표현식 보다 간결합니다.
- ES5 버전
var arr = [1, 2, 3];
var pow = arr.map(function (x) {
return x * x;
});
console.log(pow);
// [ 1, 4, 9 ]
- ES6 버전
const arr = [1, 2, 3];
const pow = arr.map(x => x * x);
console.log(pow); // [ 1, 4, 9 ]
차이점.
- 일반 함수와 화살표 함수의 차이점은 아래와 같습니다.
1. this
- 일반 함수와 화살표 함수의 가장 큰 차이점은 this 입니다.
- 화살표 함수와 일반 함수는 this가 다른 곳을 가리킵니다.
- 화살표 함수의 this는 바로 상위 스코프의 this와 같습니다.
- 일반 함수는 this가 동적으로 바인딩 됩니다. 일반 함수의 this는
내부 함수, 콜백 함수: 전역 객체
,객체의 메소드
,생성자 함수
입니다.
2. 생성자 함수로 사용 가능 여부
- 일반 함수는 생성자 함수로 사용할 수 있지만, 화살표 함수는 생성자 함수로 사용할 수 없습니다.
- 화살표 함수는 prototype 프로퍼티를 가지고 있지 않기 때문 입니다.
3. arguments 사용 가능 여부
- 일반 함수 에서는 함수가 실행 될때 암묵적으로 arguments 변수가 전달되어 사용할 수 있습니다.
- 화살표 함수에서는 arguments 변수가 전달되지 않습니다.
Reference.
오늘 준비한 내용은 여기까지 입니다.
이번 포스팅이 도움이 되셨거나 궁금한 점이 있으시다면 언제든지 댓글을 달아주세요!🙋🏻♀️✨