ES6 이전의 모든 함수는 일반 함수로서 호출할 수 있는 것은 물론 생성자 함수로서 호출할 수 있다.
ES6 이전에 일반적으로 메서드라고 부르던 객체에 바인딩된 함수는 callable이며 constructor이다.
ES6 함수의 구분 | constructor | prototype | super | arguments |
일반 함수 | Ο | Ο | Χ | Ο |
메서드 | Χ | Χ | Ο | Ο |
화살표 함수 | Χ | Χ | Χ | Χ |
메서드
ES6 사양에서 메서드는 메서드 축약 표현으로 정의된 함수만을 의미한다.
ES6 메서드는 인스턴스를 생성할 수 없는 non-constructor다.
ES6 메서드는 자신을 바인딩한 객체를 가리키는 내부 슬롯 [[HomeObject]]를 갖는다.
화살표 함수
화살표 함수는 선언문으로 정의할 수 없고 함수 표현식으로 정의해야 한다.
매개변수가 한 개인 경우 소괄호를 생략할 수 있다.
함수 몸체가 하나의 문으로 구성된다면 함수 몸체를 감싸는 중괄호를 생략할 수 있고,
이때 함수 몸체 내부의 문이 값으로 평가될 수 있는 표현식인 문이라면 암묵적으로 반환된다.
객체 리터럴을 반환하는 경우 객체 리터럴을 소괄호로 감싸 주어야 한다.
화살표 함수도 즉시 실행 함수로 사용할 수 있다.
화살표 함수 내부에서 this, super, arguments를 참조하면,
상위 스코프의 this, super, arguments를 그대로 참조한다.
화살표 함수와 일반 함수의 차이
- 화살표 함수는 인스턴스를 생성할 수 없는 non-constructor다.
- 중복된 매개변수 이름을 선언할 수 없다.
- 화살표 함수는 함수 자체의 this, arguments, super, new.target 바인딩을 갖지 않는다.
Rest 파라미터
함수에 전달된 인수들의 목록을 배열로 전달받는다.
Rest 파라미터는 반드시 마지막 파라미터이어야 한다.
Rest 파라미터는 단 하나만 선언할 수 있다.
매개변수 기본값
ES6에서 도입된 매개변수 기본값을 사용하면 함수 내에서 수행하던 인수 체크 및 초기화를 간소화할 수 있다.
매개변수 기본값은 매개변수에 인수를 전달하지 않은 경우와 undefined를 전달한 경우에만 유효하다.
Rest 파라미터에는 기본값을 지정할 수 없다.
⬇️ 출처