37.1 Set중복되지 않는 유일한 값들의 집합수학적 집합을 구현하기 위한 자료구조(교집합, 합집합, 차집합, 여집합 등) 배열과 달리 동일한 값이 중복될 수 없고, 요소 순서에 의미가 없고, 인덱스로 접근할 수 없음 요소 순서에 의미를 갖지 않지만 요소가 추가된 순서로 Set 객체를 순회함이터러블의 순회와 호환성을 유지하기 위함 1. Set 객체의 생성Set 생성자 함수는 이터러블을 인수로 전달받아 Set 객체 생성중복을 허용하지 않기 때문에 배열에서 중복된 요소를 제거할 수 있음const arrSet = new Set([1, 2, 3]);const strSet = new Set('hello'); 2. 요소 개수 확인 Set.prototype.size setter 함수 없이 getter 함수만 존재하는..
36.1 배열 디스트럭처링 할당URL을 파싱하여 protocol, host, path 프로퍼티를 갖는 객체를 반환하는 예시function parseURL(url = '') { const parsedURL = url.match(/^(\w+):\/\/([^/]\/(.*)$/); if (!parsedURL) return {}; const [, protocol, host, path] = parsedURL; return { protocol, host, path };} 36.2 객체 디스트럭처링 할당const str = 'Hello'; // String 래퍼 객체const { length } = str; // 5
스프레드 문법을 사용할 수 있는 대상: 이터러블 스프레드 문법은 값이 아닌 값들의 목록을 만듦- 함수 호출문의 인수 목록- 배열 리터럴의 요소 목록- 객체 리터럴의 프로퍼티 목록 Rest 파라미터와 반대 개념 35.1 함수 호출문의 인수 목록에서 사용하는 경우const arr = [1, 2, 3];Math.max(...arr);// 스프레드 문법 제공 이전Math.max.apply(null, arr); 35.2 배열 리터럴 내부에서 사용하는 경우기존 방식보도 간결하고 가독성 좋게 표현할 수 있음 1. concat[1, 2].concat([3, 4]);[...[1, 2], ...[3, 4]); 2. spliceconst arr1 = [1, 4];const arr2 = [2, 3];arr1.splice(1..
34.1 이터레이션 프로토콜순회 가능한 자료구조를 만들기 위한 규칙ES6에서 도입. for...of문, 스프레드 문법, 배열 디스트럭처링 할당의 대상으로 사용할 수 있도록 일원화 이터러블 프로토콜Symbol.iterator를 프로퍼티 키로 사용한 메서드를 직접 구현하거나,프로토타입 체인을 통해 상속받은 Symbol.iterator 메서드를 호출하면이터레이터 프로토콜을 준수한 이터레이터 반환 이터러블 이터러블 프로토콜(규약)을 준수한 객체for...of문 순회, 스프레드 문법, 배열 디스트럭처링 할당 사용 가능const isIterable = v => v !== null && typeof v[Symbol.iterator] === 'function'; 2021.01 TC39 프로세스의 stage 4(Fini..
33.1 심벌이란?다른 값과 중복되지 않는 유일무이한 값(원시 타입)이름 충돌 위험이 없는 유일한 프로퍼티 키를 만들기 위해 사용기존에 작성된 코드에 영향을 주지 않고 새로운 프로퍼티를 추가하기 위해 도입(하위 호환성 보장) 33.2 심벌 값의 생성1. Symbol 함수new 연산자 없이 호출인자로 문자열을 넘겨 설명을 추가할 수 있음. 디버깅 용도로 사용(설명이 같아도 다른 심벌 값을 생성함)const symbol = Symbol();console.log(symbol); // Symbol()const coffee = Symbol('coffee');console.log(coffee.description); // coffeeconsole.log(coffee.toString()); // Symbol(coff..
