- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 에러처리
- React
- js
- 백준
- 비동기
- http
- 백준 실버
- 네트워크
- 상태관리
- error
- git
- 이터러블
- 웹
- deep dive
- 자바스크립트
- async
- map
- 알고리즘
- Angular
- es6
- 모던 자바스크립트
- Java Script
- JavaScript
- git error
- 모던 자바스크립트 deep dive
- C++
- html
- 그림으로 배우는 http&network
- 프론트엔드
- get
목록Front-End/모던 자바스크립트 Deep Dive (42)
sharingStorage
40.1 이벤트 드리븐 프로그래밍 브라우저는 처리해야할 특정 사건이 발생하면 이를 감지하여 이벤트를 발생시킨다. 이벤트가 발생했을 때 호출될 함수를 이벤트 핸들러 라 하고 이벤트가 발생했을 때 브라우저에게 이벤트 핸들러의 호출을 위임하는 것을 이벤트 핸들러 등록이라 한다. 프로그램의 흐름을 이벤트 중심으로 제어하는프로그래밍 방식을 이벤트 드리븐 프로그래밍이라한다. 40.2 이벤트 타입 40.2.1 마우스 이벤트 이벤트 타입은 이벤트의 종류를 나타내는 문자열이다. 다음에 소개하는 이벤트 타입은 사용빈도가 높은 이벤트다. click - 마우스 버튼 클릭시 dbclick - 마우스 더블 클릭 mousedown - 마우스 버튼 눌렀을 때 mouseup - 누르고 있는 마우스 놓았을 때 mousemove - 마우..
브라우저 렌더링 엔진은 HTML 문서를 파싱하여 브라우저가 이해할 수 있는 자료구조인 DOM을 생성한다. DOM은 HTML 문서의 계층적 구조와 정보를 표현하며 이를 제어할 수 있는 API, 즉 프로퍼티와 메서드를 제공하는 트리 자료구다. 39.1 노드 39.1.1 HTML 요소와 노드 객체 HTML 요소는 HTML 문서를 구성하는 개별적인 요소를 의미한다. HTML 요소는 렌더링 엔진에 의해 파싱되어 DOM을 구성하는 요소 노드 객체로 변환된다. 이때 HTML 요소의 어트리뷰트는 어트리뷰트 노드로, HTML 요소의 텍스트 콘텐츠는 텍스트 노드로 변환된다. HTML요소의 콘첸츠 영역에는 텍스트뿐만 아니라 다른 HTML요소도 포함할 수 있다. 이때 HTML요소 간에는 중첩 관계에 의해 계층적인 부자 관계가..
구굴의 V8 자바스크립트 엔진으로 빌드된 자바스크립트 런타임 환경인 Node.js의 등장으로 자바스크립트는 웹르바우저를 벗어나 서버사이드 애플리케이션 개발에도 사용할 수 있는 범용 개발 언어가 되었다. 대부분의 프로그래밍 언어는 운영체제나 가상머신 위에서 실행되지만 웹 어플리케이션의 클라이언트 사이드 자바스크립트는 브라우저에서 HTML, CSS 와 함께 실행된다. 이를 위해 브라우저가 HTML, CSS, 자바스크립트로 작성된 텍스트 문서를 어떻게 파싱(해석)하여 브라우저에 렌더링하는지 살펴보자 브라우저는 다음과 같은 과정을 거쳐 렌더링을 수행한다 브라우저는 HTML, CSS, 자바스크립트, 이미지, 폰트 파일 등 렌더링에 필요한 리소스를 요청하고 서버로부터 응답받는다. 브라우저의 렌더링 엔진은 서버로부터..
37.1 Set Set 객체는 중복되지 않는 유일한 값들의 집합이다. Set 객체는 배열과 유사하지만 다음과 같은 차이가 있다. Set객체는 동일한 값을 중복하여 포함할 수 없다. 요소 순서에 의미가 없다. 인덱스 요소에 접근할 수 없다. Set 객체의 특성은 수학적 집합의 특성과 일치한다. Set은 수학적 집합을 구현하기 위한 자료구조이며 Set을 통해 교집합, 합집합, 차집합, 여집합 등을 구현할 수 있다. 37.1.1 Set 객체의 생성 Set 생성자 함수는 이터러블을 인수로 전달받아 Set 객체를 생성한다. 이때 이터러블의 중복된 값은 Set 객체에 요소로 저장되지 않는다. 중복을 허용하지 않는 Set 객체 특성을 활용하여 배열의 중복된 요소를 제거할 수 있다. 37.1.2 요소 개수 확인 Set..
디스트럭처링 할당 디스트럭처링 할당은 구조화된 배열과 같은 이터러블 또는 객체를 destructuring(비구조화, 구조파괴)하여 1개 이상의 변수에 개별적으로 할당하는 것을 말한다. 배열과 같은 이터러블 객체 또는 객체 리터럴에서 필요한 값만 추출하여 변수에 할당할 때 유용하다. 36.1 배열 디스트럭처링 할당 다음은 ES5와 ES6에서 구조화된 배열을 디스트럭처링하여 1개 이상 변수에 할당하는 방법이다. 배열 디스트럭처링 할당을 위해서는 할당 연산자 왼쪽에 값을 할당받을 변수를 선언해야한다. 이때 변수를 배열 리터럴 형태로 선언한다. 배열 디스트럭처링 할당의 기준은 배열의 인덱스다. 순서대로 할당되며 변수의 개수와 이터러블의 요소 개수가 반드시 일치할 필요는 없다. 배열 디스트럭처링 할당을 위해 변수..
spread 문법 ES6에서 도입된 스프레드 문법 ...은 하나로 뭉쳐 있는 여러 값들의 집합을 펼쳐서 개별적인 값들의 목록으로 만든다. 스프레드 문법을 사용할 수 있는 대상은 Array, String, Map, Set, DOM 컬렉션, arguments 와 같이 for ... of 문으로 순회할 수 있는 이터러블에 한정된다. 스프레드 문법의 결과는 값이 아니다. 따라서 결과를 변수에 할당할 수 없고 다음과 같이 쉼표로 구분한 값의 목록을 사용하는 문맥에서만 사용가능하다. 함수 호출문의 인수 목록 배열 리터럴의 요소 목록 객체 리터럴의 프로퍼티 목록 35.1 함수 호출문의 인수 목록에서 사용하는 경우 Math.max 메서드의 인수로 배열을 전달할 때 스프레드 문법 사용시 간결하고 가독성이 더 좋다. 스프..
34.1 이터레이션 프로토콜 ES6에서 도입된 이터레이션 프로토콜은 순회 가능한 데이터 컬렉션을 만들기 위해 ECMAScript 사양에 정의하여 미리 약속한 규칙이다. ES6이전에 다양한 방법으로 순회할 수 있었지만 ES6에선 순회 가능한 데이터 컬렉션을 이터레이션 프로토콜을 준수하는 이터러블로 통일하여 for...of, 스프레드 문법, 배열 디스트럭처링 할당의 대상으로 사용할 수 있도록 일원화했다. 이터레이션 프로토콜에는 이터러블 프로토콜과 이터레이터 프로토콜이있다. 이터러블 프로토콜 Well-kwown Symbol인 Symbol.iterator를 프로퍼티 키로 사용한 메서드를 직접 구현하거나 프로토타입 체인을 통해 상속 받은 Symbol.iterator메서드를 호출하면 이터레이터 프로토콜을 준수한 이..
33.1 심벌이란? 심벌은 ES6에서 도입된 7번째 데이터 타입으로 변경 불가능한 원시 타입의 값이다. 심벌은 다른 값과 중복되지 않는 유일무이한 값이다. 주로 이름의 충돌 위험이 없는 유일한 프로퍼티 키를 만들기 위해 사용한다. 33.2 심벌 값의 생성 심벌값은 Symbol 함수를 호출하여 생성해야한다. 이 때 생성된 심벌 값은 외부로 노출되지 않아 확인할 수 없다. Symbol 함수에는 선택적으로 문자열을 인수로 전달할 수 있다. 이 문자열은 심벌 값에 대한 설명으로 디버깅 용도로만 사용되고 심벌 값 생성에 어떠한 영향도 주지 않는다. 심벌 값은 암묵적으로 문자열이나 숫자 타입으론 변환되지 않고 불리언 타입으론 암묵적 타입 변환이 가능하다. 33.2.2 Symbol.for / Symbol.keyFor..
32.1 String 생성자 함수 표준 빌트인 객체인 String 객체는 생성자 함수 객체다. 따라서 new 연산자와 함께 호출하여 String 인스턴스를 생성할 수 있다. String 생성자 함수에 인수를 전달하지 않고 new 연산자와 함께 호출하면 [[StringData]] 내부 슬롯에 빈 문자열을 할당한 String 래퍼 객체를 생성한다. String 생성자 함수에 인수를 전달하면서 호출하면 전달받은 문자열을 할당한 String 래퍼 객체를 생성한다. String 래퍼 객체는 배열과 마찬가지로 length와 인덱스를 나타내는 숫자 형식의 문자열을 프로퍼티 키로, 각 문자를 프로퍼티 값으로 갖는 유사 배열 객체 이면서 이터러블이다. String 생성자 함수의 인수로 문자열이 아닌 값을 전달하면 문자열..
31.1 정규표현식이란? 정규표현식은 일정한 패턴을 가진 문자열의 집합을 표현하기 위해 사용하는 형식 언어다. 정규표현식은 문자열을 대상으로 패턴 매칭 기능을 제공한다. 패턴 매칭 기능이란 특정 패턴과 일치하는 문자열을 검색하거나 추출 또는 치환할 수 있는 기능을 말한다. 휴대폰 전화번호가 유효한지 매칭해보는 코드 예제 정규표현식의 장점 : 위 예시에서 정규표현식을 사용하지 않는다면 반복문과 조건문을 통해 한문자씩 연속해서 체크해야 한다. 정규 표현식 사용시 반복문과 조건문 없이 패턴을 정의하고 테스트하는 것으로 간단히 체크할 수 있다. 정규표현식의 단점 : 정규 표현식은 주석이나 공백을 허용하지 않고 여러가지 기호를 혼합하여 사용하기 때문에 가독성이 좋지 않다. 31.2 정규 표현식의 생성 정규 표현식..