이 영역을 누르면 첫 페이지로 이동
hoonDEV 블로그의 첫 페이지로 이동

hoonDEV

페이지 맨 위로 올라가기

hoonDEV

ES6에서 Arrow Function 사용하기

  • 2020.06.26 04:03
  • 공부/JavaScript

관련 포스트

JavaScript ECMAScript란?


Arrow Function의 특징

  • function 표현에 비해 구문이 짧다.
  • 자신의 this, arguments를 바인딩하지 않는다.
  • 항상 익명 함수로만 사용된다.
  • 생성자로서 사용할 수 없다.

Arrow Function 사용하기

매개변수가 없을 때

const func = () => { ... }

매개변수가 1개일 때

const func1 = i => { ... } // 소괄호의 지정 불필요!
const func2 = (i) => { ... } // 소괄호 지정해도 무관!

매개변수가 2개 이상일 때

const func = (x, y) => { ... }

함수 Body

const func = i => { 
  return i * i;
}

한 줄의 구문만 있는 경우

const func = i => i * i; // 중괄호와 return을 생략할 수 있음. i * i 값이 리턴된다.

Arrow Function 호출하기

const add = (a, b) => a + b;
console.log(add(1, 2)); // 3

Arrow Function 콜백 함수로 전달하기

const arr = [1, 2, 3, 4, 5];
const isEven = arr.map((i) => i % 2);
console.log(isEven); // [0, 1, 0, 1, 0]

중요 Arrow Function에서의 this

일반 함수에서의 this

JavaScript에서의 this와 this 바인딩

Arrow Function에서의 this

일반 함수에서의 this는 함수가 선언될 때가 아닌, 호출될 때, 그 호출 Context에 따라 동적으로 바인딩된다. 반면에, Arrow Function은 함수가 선언될 때 정적으로 바인딩된다.

Arrow Function에서의 this는 항상, 상위 스코프의 this를 가리킨다.
이를 Lexical this라고 부른다. JavaScript의 Lexical scope 개념과 유사하다.

const me = {
  arr: [1, 2, 3],
  show() {
    function func() {
      console.log(this.arr); // undefined
    }
    func();
  },
  showArrow() {
    func = () => {
      console.log(this.arr); // [1, 2, 3]
    };
    func();
  },
};

me.show();
me.showArrow();

Arrow Function을 사용해서는 안되는 경우

메소드 정의로 사용하는 경우

객체의 함수, 즉 메소드로서 정의해서는 안된다. 일반 함수가 객체의 메소드로 정의되는 경우에는 인스턴스 자기 자신을 가리키지만, Arrow Function은 항상 상위 스코프의 this를 가리키므로 사용해서는 안된다.

const me = {
  name: 'Hoon',
  getMyName: () => this.name; // this는 상위 스코프의 this인 window를 가리키게 됨.
}
console.log(me.getMyname()); // undefined

이런 경우에는 ES6에서 제공하는 축약 메소드 표현을 사용하자.

const me = {
  name: 'Hoon',
  getMyName() { return this.name; }
}
console.log(me.getMyname()); // Hoon

prototype의 메소드

생성자 함수


참고문서

PolemaWEB

'공부 > JavaScript' 카테고리의 다른 글

JavaScript에서의 this와 this 바인딩  (0) 2020.06.27
ES6에서 let/const로 Block-scoped 변수 선언하기  (0) 2020.06.26
JavaScript에서 var를 사용하면 안되는 이유  (0) 2020.06.26
JavaScript ECMAScript란?  (0) 2020.06.26
ES6에서 배열을 활용하는 다양한 방법  (0) 2020.06.25

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • JavaScript에서의 this와 this 바인딩

    JavaScript에서의 this와 this 바인딩

    2020.06.27
  • ES6에서 let/const로 Block-scoped 변수 선언하기

    ES6에서 let/const로 Block-scoped 변수 선언하기

    2020.06.26
  • JavaScript에서 var를 사용하면 안되는 이유

    JavaScript에서 var를 사용하면 안되는 이유

    2020.06.26
  • JavaScript ECMAScript란?

    JavaScript ECMAScript란?

    2020.06.26
다른 글 더 둘러보기

정보

hoonDEV 블로그의 첫 페이지로 이동

hoonDEV

  • hoonDEV의 첫 페이지로 이동

검색

메뉴

  • 홈
  • 태그

카테고리

  • 분류 전체보기 (91)
    • 일상 (13)
      • 후기 (1)
      • 계획 (11)
    • 공지사항 (1)
    • 알고리즘 (54)
      • 문제풀이 (53)
      • 이론 (1)
    • 공부 (19)
      • React (0)
      • Angular (5)
      • Java (3)
      • C, C++ (3)
      • JavaScript (6)
      • WEB (2)
    • 디자인 (1)
      • UI, UX (1)
    • 개발 (0)
      • boom (0)

최근 글

인기 글

댓글

공지사항

아카이브

태그

  • 알고리즘
  • 이분탐색
  • 그리디
  • es6
  • 백준
  • javascript
  • dp
  • 문제풀이

나의 외부 링크

정보

훈개발자의 hoonDEV

hoonDEV

훈개발자

블로그 구독하기

  • 구독하기
  • RSS 피드

방문자

  • 전체 방문자
  • 오늘
  • 어제

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. © 훈개발자. Designed by Fraccino.

티스토리툴바