본문 바로가기

Today I Learned

(74)
모던 자바스크립트 Deep Dive 34장~36장 이러터블/스프레드 문법/디스트럭처링 할당 이러터블이 Symbol.iterator 메서드를 호출하면 이터레이터 프로토콜을 준수한 이터레이터를 반환한다. next 메서드를 호출하면 value, done 프로퍼티를 가진 이터레이터 리절트 객체를 반환한다. for ...of 문은 some 과는 다르게, done 프로퍼티가 true가 될 때까지 반복한다. Rest 파라미터와 스프레드 문법은 서로 반대의 개념이다. // Rest 파라미터는 인수들의 목록을 배열로 전달받는다. function foo(...rest) { console.log(rest); // 1, 2, 3 -> [ 1, 2, 3 ] } // 스프레드 문법은 배열과 같은 이터러블을 펼쳐서 개별적인 값들의 목록을 만든다. // [1, 2, 3] -> 1, 2, 3 foo(...[1, 2, 3])..
모던 자바스크립트 Deep Dive 33장 Symbol Symbol을 생성할 때는 new 연산자와 함께 호출하지 않는다. Symbol.for 메서드는 전역 레지스트리에서 해당 키와 일치하는 심벌 값을 검색한다. 검색에 성공하면 실벌 값을 반환하고 실패하면 새로운 심벌 값을 생성한다. keyFor 메서드는 심벌 값을 추출한다. Symbol.for 메서드로 생성된 값은 레지스트리에서 관리되지 않는다. const mySymbol = Symbol("mySymbol"); const s1 = Symbol.for("mySymbol"); const s2 = Symbol.for("mySymbol2"); keyFor(mySymbol2); 심벌은 언제 사용할까? 심벌의 목적은 중복되지 않는 상수 값을 생성하는 것과 기존 코드에 영향을 주지 않고 프로퍼티를 추가하기 위해 도입되었..
모던 자바스크립트 Deep Dive 32장 String String 도 원시 타입이기 때문에 String 래퍼 객체를 생성한다. String 래퍼 객체는 length 프로퍼티와 인덱스를 가지므로 유사 배열 객체다. 'Hello'.length; // -> 5 '안녕하세요!'.length; // -> 6 String 메서드 문자열은 변경 불가능한 원시 값이기 때문에 String 래퍼 객체도 읽기 전용 객체로 제공된다. String 메서드는 언제나 새롱운 문자열을 반환한다. String.prototype.indexOf 인수로 전달받은 문자열에서 대상 문자열이 위치한 인덱스를 반환한다. 검색에 실패하면 -1을 반환한다. const str = 'Hello World'; // 문자열 str에서 'l'을 검색하여 첫 번째 인덱스를 반환한다. str.indexOf('l')..
모던 자바스크립트 Deep Dive 31장 RegExp 정규표현식이란? 정규표현식은 일정한 패턴을 가진 문자열의 집합을 표현하기 위해 사용하는 형식 언어다. 문자열을 대상으로 패턴 매칭 기능을 제공한다. 예를 들어, 휴대폰 전화번호의 유효성을 체크할 때 사용한다. // 사용자로부터 입력받은 휴대폰 전화번호 const tel = '010-1234-567팔'; // 정규 표현식 리터럴로 휴대폰 전화번호 패턴을 정의한다. const regExp = /^\d{3}-\d{4}-\d{4}$/; // tel이 휴대폰 전화번호 패턴에 매칭하는지 테스트(확인)한다. regExp.test(tel); // -> false 정규 표현식 리터럴 정규표현식은 패턴과 플래그로 구성된다. 어떤 문자열 내에 패턴과 일치하는 문자열이 존재할 때, "정규 표현식과 매치한다"라고 표현한다. R..
모던 자바스크립트 Deep Dive 30장 Date UTC : Coordinated Universal Time 협정 세계시 GMT : Greewich Mean Time, 그리니치 평균시 KST : Korean Standard Time, 한국 표준시 Date는 표준 빌트인 객체이고, 날짜와 시간을 위한 메서드를 제공한다. 현재 날짜와 시간은 코드가 실행된 시스템의 시계에 의해 결정된다. Date 생성자 함수 Date 객체는 내부적으로 정수값을 갖는데, 이는 1970년 1월 1일 00:00:00(UTC)를 기점으로 객체가 나타내는 날짜와 시간까지의 밀리초(천분의 1초)를 나타낸다. Date 메서드 Date.prototype.getTime 1970년 1월 1일 00:00:00(UTC)를 기점으로 Date 객체의 시간까지 경과된 밀리초를 반환한다. new Dat..
모던 자바스크립트 Deep Dive 29장 Math Math는 생성자 함수가 아니기 때문에 정적 프로퍼티와 정적 메서드만 제공한다. Math 메서드 Math.random 임의의 난수를 반환한다. 0은 포함되지만 1은 포함되지 않는다. /* 1에서 10 범위의 랜덤 정수 취득 1) Math.random으로 0에서 1 미만의 랜덤 실수를 구한 다음, 10을 곱해 0에서 10 미만의 랜덤 실수를 구한다. 2) 0에서 10 미만의 랜덤 실수에 1을 더해 1에서 10 범위의 랜덤 실수를 구한다. 3) Math.floor로 1에서 10 범위의 랜덤 실수의 소수점 이하를 떼어 버린 다음 정수를 반환한다. */ const random = Math.floor((Math.random() * 10) + 1); console.log(random); // 1에서 10 범위의 정..

728x90