반응형
ES6 메서드는 인스턴스를 생성할 수 없는 non-constructor 이다. (생성자 함수로서 호출 할 수 없다)
prototype 프로퍼티가 없고, 프로토타입도 생성하지 않는다.
*표준 빌트인 객체가 제공하는 프로토타입 메서드와 정적 메서드도 모두 non-constructor이다.
화살표 함수
const arrow = () => {};
const test = x => x * 10;
test(3) // 30
const num = (a, b) => ({a, b}) // 객체 리터럴을 반환할 경우 소괄호로 감싼다.
num(3,4) // {a: 3, b: 4}
// const num2 = (a, b) => {return {a, b}} 이것과 같다
화살표함수도 고차함수(HOF)에 인수로 전달될 수 있다.
[1,2,3].map((item)=> -item) // [-1, -2, -3]
중복된 매개변수 이름을 선언할 수 없다.
const test = (a, a) => a+a; // Duplicate parameter name not allowed in this context
this, arguments, super, new.target 바인딩을 갖지 않는다.
화살표 함수 내부에서 this를 참조하면, 상위스코프의 this를 그대로 참조한다 (lexical this)
화살표함수는 함수 자체의 super 바인딩을 갖지 않는다.
화살표 함수 내부에서 super을 참조하면, 상위 스코프의 super을 참조한다. (this 와 같다)
Rest 파라미터
매개변수 이름 앞에 ...를 붙여 정의한 매개변수다.
나머지 인수들의 목록을 배열로 전달받는다.
** Rest 파라미터는 반드시 마지막 파라미터여야한다.
** Rest 파라미터는 하나만 선언할수있다.
** 함수 정의 시 선언한 매개변수의 갯수를 나타내는 함수 객체의 length 프로퍼티에 포함되지 않는다.
const printRest = (a, b, ...rest) => {
console.log(rest);
}
printRest(1,2,3,4,5) // [3,4,5]
console.log(printRest.length) // 2 (a 와 b)
화살표 함수로 가변 인자 함수를 구현해야할때는 반드시 Rest 파라미터를 사용한다.
Rest에는 기본값을 지정할 수 없다.
const test = (a=0, b=0, ...rest) => {
return a+b+rest
}
test(1,2,3) // '33' (number인 1+2 먼저 계산되고, number 3에 배열 [3]이 더해져 string 33출력 )
// rest는 [3]
반응형
'[STUDY] 스터디 > Deep Dive JS' 카테고리의 다른 글
js Array (0) | 2022.12.31 |
---|---|
js 클래스 (0) | 2022.12.31 |
js의 빌트인 객체 3종류 (0) | 2022.12.17 |
실행 컨텍스트와 클로저 (0) | 2022.12.17 |
js this (0) | 2022.12.17 |