Javascript

Javascript ES6 - Arrow Function

hyunzxn 2022. 1. 14. 21:57

Arrow Function은 기존의 함수를 좀 더 간편하게 사용하기 위한 ES6에서 새로 등장한 개념입니다

function orginalFunc () { } // 기존 함수 선언 방식

const ArrowFunc = () => { } // 화살표 함수 선언 방식


기존함수();
화살표함수();

화살표 함수는 변수에 함수를 담는 식으로 선언하는 것이 특징입니다. 함수를 실행하는 방식은 기존함수랑 동일합니다. 그렇다면 화살표함수를 왜 사용하는 것일까요? 이를 살펴보기 앞서 프로그래밍에서 함수를 사용하는 이유를 알아야합니다.

 

프로그래밍에서 함수를 사용하는 이유는 크게 두 가지입니다.

     ① 여러가지 기능을 하는 코드를 한 가지로 묶고 + 나중에 재사용할 때

     ② 입출력 기능을 만들 때

화살표 함수의 강점이 발휘되는 부분은 ②의 경우입니다. 화살표함수는 시각적으로 직관적이기 때문에 입출력기능을 만들 때 아주 유용합니다. 화살표 함수의 장점은 아래와 같습니다.

#1 parameter가 하나일 때 소괄호 생략이 가능합니다.

const 두배만들기 = (x) => { return x * 2 } 
const 두배만들기 = x => { return x * 2 } 




#2 중괄호 안에 들어가는 내용이 한 줄일 때 중괄호도 생략이 가능합니다.

const 두배만들기 = (x) => { return x * 2 }
const 두배만들기 = (x) => return x * 2




#1과 #2 종합

const 두배만들기 = x => return x * 2

 

⚠️화살표함수를 사용할 때 주의점 : this

화살표함수의 특징은 어디서 쓰든 기존에 사용된 this의 값을 바꾸지 않는다는 것입니다. 즉 바깥에서 this를 한 번 사용하고 이것의 의미를 계속 사용하고 싶을 때는 함수를 선언할 때 화살표함수를 사용하는 것이 바람직합니다.

const object1 = {
  exFunc : function(){ console.log(this); }
}

object1.exFunc();

이런 경우에는 this가 object1을 의미합니다. method에서 사용되었기 때문이죠.

 

const object1 = {
  exFunc : () => { console.log(this); }
}

object1.exFunc();

그러면 이런 경우에는 어떻게 될까요? 화살표함수 안의 this는 전에 사용한 this의 의미를 그대로 사용한다고 했습니다. 그런데 이 코드에선 this가 처음 사용되었죠? 따라서 이런 경우에는 object1 이전에 this가 사용된 것처럼 간주해서(다짜고짜 this를 선언한 case) this의 의미가 window가 됩니다.

 

화살표함수를 사용하면 편리한 점도 있지만 this를 사용할 때는 그 의미를 어떻게 사용하고 싶느냐에 따라서 신중하게 사용할 필요성이 있습니다.

728x90

'Javascript' 카테고리의 다른 글

Javascript ES6 - Default Parameter & Arguments  (0) 2022.01.15
Javascript ES6 - Spread Operator  (0) 2022.01.15
Javascript ES6 - Template Literals  (0) 2022.01.15
Javascript ES6 - Variables  (0) 2022.01.14
Javascript ES6 - this 키워드의 의미  (0) 2022.01.14