[ 모던 자바스크립트 Deep Dive ] 35장 : 스프레드 문법

박새롬·2024년 4월 12일
0
post-thumbnail
  • ES6에서 도입된 스프레드 문법(전개문법은) ...은 하나로 뭉쳐 있는 여러 값들의 집합을 펼쳐서(전개, 분산하여, spread)개별적인 값들의 목록으로 만든다.
    • 스프레드 문법의 결과는 변수에 할당할 수 없다.
    • 이처럼 스프레드 문법의 결과물은 값으로 사용할 수 없고, 다음과 같이 쉼표로 구분한 값의 목록을 사용하는 문맥에서만 사용할 수 있다.

35.1 함수 호출문의 인수 목록에서 사용하는 경우

  • 요소들의 집합인 배열을 펼쳐서 개별적인 값들의 목록으로 만든후,
  • 이를 함수의 인수 목록으로 전달해야 하는 경우가 있다.
  • Math.max 메서드는 매개변수 개수를 확정할 수 없는 가변 인자 함수다
  • 다음과 같이 개수가 정해져 있지 않은 여러 개의 숫자를 인수로 전달받아 인수 중에서 최대값을 반환한다.
    • 만약 Math.max 메서드에 숫자가 아닌 배열을 인수로 전달하면 최대 값을 구할 수 없으므로 NaN을 반환한다.

35.2 배열 리터럴 내부에서 사용하는 경우

35.2.1 concat

  • 스프레드 문법을 사용하면 별도의 메서드를 사용하지 않고 배열 리터럴만으로 2개의 배열을 1개의 배열로 결합할 수 있다.

35.2.2 splice

  • 스프레드 문법을 사용하면 다음과 같이 더욱 간결하고 가독성 좋게 표현할 수 있다.

35.2.3 배열 복사

  • ES5에서 배열을 복사하려면 silce 메서드를 사용한다.
  • 스프레드 문법을 사용하면 다음과 같이 더욱 간결하고 가독성 좋게 표현할 수 있다.
    • 이때 원본 배열의 각 요소를 얕은 복사하여 새로운 복사본을 생성한다.
    • 이는 slice메서드도 마찬가지다.

35.3 객체 리터럴 내부에서 사용하는 경우

  • 스프레드 문법의 대상은 이터러블이어야 하지만 스프레드 프로퍼티 제안은 일반 객체를 대상으로도 스프레드 문법의 사용을 허용한다.
  • 스프레드 프로퍼티가 제안되기 이전에는 ES6에서 도입된 Object.assign 메서드를 사용하여 여러 개의 객체를 병합하거나 특정 프로퍼티를 변경 또는 추가했다.
  • 스프레드 프로퍼티는 Object.assign 메서드를 대체할 수 있는 간편한 문법이다.
profile
열심히 하고싶은 사람

0개의 댓글