ES6 함수의 추가 기능

2024. 11. 15. 22:21·Front end/JavaScript

자바스크립트는 ES6 이전과 이후로 나뉜다. ES6이후 JS의 많은 부분이 바뀌었는데 함수 부분도 마찬가지이다. 먼저 이전의 함수는 생성자함수와 일반 함수의 구분이 없었다. 따라서 모든 함수는 일반함수로서 호출할 수 있으며 생성자 함수로서 new 키워드를 사용해 호출할 수 있었다.

 

이러한 유동성은 성능면에서도 큰 문제를 갖는다. 바로 콜백함수 또는 객체에 바인딩 된 함수 모두 cunstructor를 갖는다는 점이다. 이는 불필요한 프로토타입 객체를 생성하게 되며, 함수의 명확한 구분없이 사용되는 점은 코드의 가독성에도 큰 영향을 미친다. 

 

따라서 ES6 이후 함수의 사용 목적에 따라 세가지 종류로 나누었다. 

구분 constructor prototype super arguments
일반함수 O O X O
메서드 X X O O
화살표 함수 X X X X

※ 제너레이트 함수와 async함수는 제외하였습니다.

메서드

메서드는 함수의 한 종류이다. 이전에는 "메서드는 함수이다." 라고만 알고있었는데 메서드의 정확한 정의는 "ES6 사양에서 메서드 축약 표현으로 정의된 함수"이다. 이 때 메서드는 객체에 속한 함수이다. 

 

메서드 축약표현이란 function 키워드를 사용하지 않고 함수를 정의하는 것을 말한다. 이렇게 생성된 메서드는 인스턴스를 생성할 수 없으며 프로토타입 또한 존재하지 않는다. 

 

또한, 자신을 바인딩한 객체를 가리키는 내부슬롯 [[HomeObject]]를 갖는다. 따라서 super 키워드를 사용할 수 있다. 이렇게 객체 내부에서 사용되는 메서드는 본연의 기능 (super)를 추가하고 불필요한 기능 (cunstructor)를 제거했다.

 

화살표 함수

function 키워드 대신 =>를 이용하여 사용하는 함수이다. 기존에는 없었던 문법이지만 ES6 이후 생겼으며 this 바인딩을 갖지 않는다. 따라서 화살표 함수 내에서 this를 사용하면 상위스코프의 this를 참조한다. 이를 lexical this라고 한다. 

 

// 화살표 함수 정의
const add = (a,b) => a + b

Rest 파라미터

rest 파라미터는 함수에 전달된 인수의 목록을 배열로 전달받는다. 

 

이 때 일반 매개변수와 함께 사용할 수 있으며 인수들은 매개변수와 rest 파라미터에 순차적으로 할당된다.

// rest 파라미터

function foo(...rest){
	console.log(rest)	// [1,2,3,4,5]
}

foo(1,2,3,4,5)


// 매개변수와 함께 사용하는 rest 파라미터

function bar(param,...rest){
	console.log(param)	// 1
	console.log(rest)	// [2,3,4,5]
}

bar(1,2,3,4,5)

 

ES6 이전과 이후의 차이점을 공부하기 위해 작성된 글 입니다.

 

이번 단원은 함수의 기능에 초점을 맞춘게 아닌 ES6 이후 변경된 점에 초점을 맞추었기 때문에 함수의 기능을 학습하기 위해 보는것은 추천하지 않습니다.

반응형
저작자표시 (새창열림)

'Front end > JavaScript' 카테고리의 다른 글

[JavaScript] 음악 플레이리스트 프로그래스바 제작 (3)  (1) 2024.11.14
[JavaScript] 타입별 메서드와 제너레이트  (2) 2024.11.13
[JavaScript] 클로저 (closure)란 무엇일까  (1) 2024.11.12
[JavaScript] 음악 플레이리스트 (2) 사운드 스펙트럼, 에러 극복기  (0) 2024.11.11
[JavaScript] 음악 스펙트럼 플레이어 만들기  (12) 2024.11.10
'Front end/JavaScript' 카테고리의 다른 글
  • [JavaScript] 음악 플레이리스트 프로그래스바 제작 (3)
  • [JavaScript] 타입별 메서드와 제너레이트
  • [JavaScript] 클로저 (closure)란 무엇일까
  • [JavaScript] 음악 플레이리스트 (2) 사운드 스펙트럼, 에러 극복기
re-hwi
re-hwi
재휘의 개발일기
    반응형
  • re-hwi
    Dvelopment blog
    re-hwi
  • 전체
    오늘
    어제
    • 재휘의 개발일기 (168)
      • 개발 (1)
        • 소프트웨어 공학 (25)
      • Python (18)
        • numpy (8)
      • OS (23)
        • 쉽게 배우는 운영체제 (23)
      • Front end (1)
        • HTML (6)
        • CSS (9)
        • JavaScript (18)
        • React (2)
        • Vue.js (5)
        • TypeScript (5)
        • Sass (3)
      • Algorithm (1)
        • 파이썬 알고리즘 인터뷰 (2)
        • 자료구조와 함께 배우는 알고리즘 (20)
      • Android (2)
        • 안드로이드 앱 프로그래밍 with 코틀린 (2)
      • Project (15)
      • Network (0)
      • etc (12)
        • 이것저것 (10)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    numpy
    알고리즘
    JavaScript
    티스토리챌린지
    프론트엔드
    TS
    REACT
    js
    오블완
    리액트
    개발
    typeScript
    뷰
    자료구조
    정보처리기사
    표
    타입스크립트
    컴포넌트
    정처기
    pwa
    vue
    CSS
    FE
    scss
    파이썬
    HTML
    연결리스트
    플레이리스트
    자료흐름도
    sass
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
re-hwi
ES6 함수의 추가 기능
상단으로

티스토리툴바