스프레드 문법을 사용할 수 있는 대상: 이터러블 스프레드 문법은 값이 아닌 값들의 목록을 만듦- 함수 호출문의 인수 목록- 배열 리터럴의 요소 목록- 객체 리터럴의 프로퍼티 목록 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..
32.1 String 생성자 함수String 래퍼 객체 생성const strObj = new String();// String {length: 0, [[PrimitiveValue]]: ""}const strObj2 = new String('Lee'); // String {0: "Lee", 1: "e", 2: "e", length: 3, [[PrimitiveValue]]: "Lee"}ES5의 [[PrimitiveValue]]은 [[StringData]]와 동일 유사 배열 객체, 이터러블인덱스로 문자에 접근할 수 있으나 원시값이기 때문에 값을 변경할 수 없음 문자열로 변환하기 위해 new 연산자를 붙이지 않고 호출하기도 함(9.3 명시적 타입 변환) 32.3 String 메서드문자열은 원시값(변경 불가능)..
31.1 정규 표현식이란?일정한 패턴을 가진 문자열의 집합을 표현하기 위해 사용하는 형식 언어패턴 매칭 기능: 특정 패턴과 일치하는 문자열을 검색하거나 추출, 치환할 수 있는 기능 31.2 정규 표현식의 생성정규 표현식 리터럴 /regexp/flagsRegExp 생성자 함수 new RegExp(pattern[, flags]) 31.3 RegExp 메서드1. RegExp.prototype.exec(string)정규 표현식의 패턴을 검색하여 매칭되는 첫 번째 결과를 배열에 담아 반환(g 플래그가 있어도)없으면 null 반환 2. RegExp.prototype.test(string)정규 표현식 패턴을 검색하여 매칭 결과를 불리언으로 반환 3. String.prototype.match(regExp)전달된 정규 ..
Date날짜와 시간(연월일시분초밀리초)을 위한 메서드를 제공하는 빌트인 객체이자 생성자 함수 30.1 Date 생성자 함수new Date()는 현재 날짜와 시간을 갖는 Date 객체 반환Date()는 현재 날짜와 시간을 갖는 문자열 반환 new Date(milliseconds) 1970년 1월 1일 00:00:00(UTC) + 전달된 밀리초를 나타내는 Date 객체 반환new Date(dateString) Date.parse 메서드에 의해 해석된 날짜와 시간을 나타내는 Date 객체 반환 new Date(year, month[, day, hour, minute, second, millisecond])year month0 ~ 11day1 ~ 31 hour0 ~ 23minute0 ~ 59second0 ~ 5..
28.1 Number 생성자 함수const numObj = new Number();console.log(numObj); // Number {[[PrimitiveValue]]: 0}인수를 전달하지 않고 new 연산자와 Number 생성자 함수를 호출할 경우[[NumberData]] 내부 슬롯에 0을 할당한 Number 래퍼 객체 생성[[PrimitiveValue]]는 [[NumberData]] 내부 슬롯을 가리킴(ES5에서 사용) 인수를 전달할 경우 [[NumberData]] 내부 슬롯에 인수로 전달받은 숫자를 할당 인수로 숫자가 아닌 값을 전달할 경우 인수를 숫자로 강제 변환변환할 수 없다면 NaN new 연산자와 함께 호출하지 않는다면 Number 인스턴스(객체)가 아닌 숫자를 반환 28.2 Numbe..
27.9 배열 고차 함수함수를 인수로 전달받거나 함수를 반환하는 함수 2. Array.prototype.forEachfor문에 비해 성능이 좋지 않지만 가독성은 좋음요소가 아주 많은 배열이나 시간이 오래 걸리는 복잡한 코드가 아니라면 forEach 사용을 권장 5. Array.prototype.reduce빈 배열로 reduce를 호출한 경우: 에러 발생객체의 특정 프로퍼티 값을 합산하는 경우: undefined에 키로 접근하게 되어 원하는 결과를 얻을 수 없음-> 초기값을 전달하는 것이 안전함 6. Array.prototype.sometruthy한 값이 도출되는 순간 배열 순회 종료(mdn)빈 배열인 경우 false 반환 7. Array.prototype.everyfalsy한 값이 도출되면 배열 순회 종..
27.1 배열배열(array): 여러 개의 값(요소element)을 순차적으로 나열한 자료구조 배열의 생성자 함수: Array배열의 프로토타입 객체: Array.prototypeconst arr = [1, 2, 3];arr.constructor === Array // trueObject.getPrototypeOf(arr) === Array.prototype // true Arrray의 타입은 Object Object와 Array의 차이구분객체배열구조프로퍼티 키, 값인덱스, 요소값의 참조프로퍼티 키인덱스값의 순서XOlength 프로퍼티XO 반복문으로 자료구조를 순서대로 순회하려면 자료구조의 요소에 순서대로 접근할 수 있어야하고, 길이를 알 수 있어야 함 27.2 자바스크립트의 배열은 배열이 아니다자료구조에..