더북(TheBook)

노트 ES6의 화살표 함수

화살표 함수(arrow function)는 ES6 문법에서 함수를 표현하는 새로운 방식입니다. 그렇다고 해서 기존 function을 이용한 함수 선언 방식을 아예 대체하지는 않습니다. 사용 용도가 조금 다릅니다. 이 문법은 주로 함수를 파라미터로 전달할 때 유용합니다.

setTimeout(function() {
  console.log('hello world');
}, 1000);
 
setTimeout(() => {
  console.log('hello world')
}), 1000);

 

이 문법이 기존 function을 대체할 수 없는 것은 용도가 다르기 때문입니다. 무엇보다 서로 가리키고 있는 this 값이 다릅니다.

다음 코드를 한번 확인해 보세요.

function BlackDog() {
  this.name = '흰둥이';
  return {
    name: '검둥이',
    bark: function() {
      console.log(this.name + ': 멍멍!');
    }
  }
}
 
const blackDog = new BlackDog();
blackDog.bark(); // 검둥이: 멍멍!
 
function WhiteDog() {
  this.name = '흰둥이';
  return {
    name: '검둥이',
    bark: () => {
      console.log(this.name + ': 멍멍!');
    }
  }
}
 
const whiteDog = new WhiteDog();
whiteDog.bark(); // 흰둥이: 멍멍!

 

function()을 사용했을 때는 검둥이가 나타나고, () =>를 사용했을 때는 흰둥이가 나타납니다. 일반 함수는 자신이 종속된 객체를 this로 가리키며, 화살표 함수는 자신이 종속된 인스턴스를 가리킵니다.

화살표 함수는 값을 연산하여 바로 반환해야 할 때 사용하면 가독성을 높일 수 있습니다.

function twice(value) {
  return value * 2;
}
 
const triple = (value) => value * 3;

 

이렇게 따로 { }를 열어 주지 않으면 연산한 값을 그대로 반환한다는 의미입니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.