[ 모던 자바스크립트 Deep Dive ] 26장 : ES6 함수의 추가 기능

박새롬·2024년 4월 12일
0
post-thumbnail

26.1 함수의 구분

자바스크립트의 함수는

  • 일반적인 함수로서 호출 가능
  • new 연산자와 함께 호출하여 인스턴스를 생성할 수 있는 생성할 수 잇는 생성자 함수로서 호출 가능
  • 객체에 바인딩되어 메서드로서 호출 가능
    • ES6 이전의 모든 함수는 일반 함수로서 호출할 수 잇는 것은 물론 생성자 함수로서 호출할 수 있다.

26.2 메서드

  • 일반적으로 메서드는 객체에 바인딩된 함수를 일컫는다
  • ES6 사양에서 메서드는 메서드 축약 표현으로 정의된 함수만을 의미한다.

26.3 화살표 함수

화살표 함수는 function 키워드 대신 화살표를 사용하여 기존의 함수 정의 방식보다 간략하게 함수를 정의할 수 있다.

26.3.1 화살표 함수 정의

  • 함수 정의
    • 화살표 함수는 함수 선언문으로 정의할 수 없고 함수 표현식으로 정의해야 한다. 호출 방식을 기존 함수와 동일하다.

26.3.2 화살표 함수와 일반 함수의 차이

  • 화살표 함수는 인스턴스를 생성할 수 없는 non-constructor다.
    • 화살표 함수는 인스턴스를 생성할 수 없으므로 prototype 프로퍼티가 없고 프로토타입도 생성하지 않는다.
  • 중복된 매개변수 이름을 선언할 수 없다.
    • 일반 함수는 중복된 매개변수 이름을 선언해도 에러가 발생하지 않는다.
    • 화살표 함수함수와 strict mode에서 중복된 매개변수 이름을 선언하면 에러가 발생한다.
  • 화살표 함수는 함수 자체의 this,argument,super,new.target 바인딩을 갖지 않는다.
    • 따라서 화살표 함수 내부에서 this,argument,super,new.target을 참조하면 스코프 체인을 통해 상위 스코프의 this,argument,super,new.target을 참조한다

26.3.3 this

  • 화살표 함수가 일반 함수와 구별되는 가장 큰 특징은 바로 this이다.
  • 화살표 함수의 this는 일반 함수의 this와 다르게 동작한다.
  • this바인딩은 함수가 어떻게 호출되었는지에 따라 동적으로 결정된다.
    • 화살표 함수는 함수자체의 this 바인딩을 갖지않는다.
    • 화살표 함수 내부에소 this를 참조하면 상위스코프의 this를 그대로 참조한다
    • 이를 lexical this라 한다.

26.3.4 super

  • 화살표 함수는 함수 자체의 super 바인딩을 갖지 않는다.
  • 따라서 화살표 함수 내부에서 super를 참조하면 this와 마찬가지로 상위 스코프의 super를 참조한다.

26.3.5 argument

  • 화살표 함수는 함수 자체의 argument 바인딩을 갖지 않는다.
  • 따라서 화살표 함수 내부에서 argument를 참조하면 this와 마찬가지로 상위 스코프의 argument를 참조한다.

26.4 Rest 파라미터

26.4.1 기본 문법

  • Rest 파라미터는 함수에 전달된 인수들의 목록을 배열로 전달받는다.
  • Rest 파라미터는 이름 그대로 먼저 선언된 매개변수에 할당된 인수를 제외한 나머지 인수들로 구성된 배열이 할당된다.
    • 따라서 Rest 파라미터는 반드시 마지막 파라미터이여야 한다.
    • Rest 파라미터는 단 하나만 선언할 수 있다.
    • Rest 파라미터는 함수 정의 시ㅐ 선언한 매개변수 개수를 나타내는 함수 객체의 length프로퍼티에 영향을 주지 않는다.

26.5 매개변수 기본값

  • ES6에서 도입된 매개변수 기본값을 사용하면 함수 내에서 수행하던 인수 체크 및 초기화를 간소화할 수 있다.
    • 앞서 살펴본 Rset 파라미터에는 기본값을 지정할 수 없다.
profile
열심히 하고싶은 사람

0개의 댓글