표준 빌트인 객체인 String 객체는 생성자 함수 객체다. new 연산자와 함께 호출하여 String 인스턴스를 생성할 수 있다. String 래퍼 객체는 배열과 마찬가지로 length 프로퍼티와 인덱스를 나타내는 숫자 형식의 문자열을 프로퍼티 키로, 각 문자를 프
🌼 13.1 Scope란? 스코프(유호범위)는 자바스크립트를 포함한 모든 프로그래밍 언어의 기본적이며 중요한 개념이다. 변수는 자신이 선언된 위치에 의해 자신이 유호한 범위. 즉, 다른 코드가 변수 자신을 참조할 수 있는 범위가 결정된다. 다시 말해, 모든 식별자
표준 빌트인 객체인 Date는 날짜와 시간을 위한 메서드를 제공하는 빌트인 객체이면서 생성자 함수다. 시간을 표기하는 방법으로는 UTC와 GMT가 있는데 둘은 초의 소수점 단위에서만 차이가 나기떄문에 일상에서는 혼용되어 사용된다. 기술적인 표기에서는 UTC가 사용된
객체지향 프로그래밍에서 객체는 상태를 나타내는 프로퍼티와 동작을 나타내는 메서드를 하나의 논리 구조로 묶은 복합적인 자료구조이다. 이 자료구조에서 메서드는 자신이 속한 객체를 가리키는 식별자를 참조할 수 있어야 한다. 또한 생성자 함수 내부에서는 프로퍼티 또는 메서
🌼 25.2 클래스 정의 클래스는 class 키워드를 사용하의 정의한다. 클래스 이름은 생성자 함수와 마찬가지로 파스칼 케이스를 사용하는 것이 일반적이다. class는 생성자 함수처럼 선언문 형태 혹은 표현식 형태로 표현 할 수 있다. 이렇게 정의된 클래스는 생
ES6에서 도입된 이터레이션 프로토콜은 순회 가능한 데이터 컬렉션을 만들기 위해 ECMAScript 사양에 정의하여 미리 약속한 규칙이다. ES6 이전 순회 가능한 데이터 컬렉션, 즉 배열, 문자열, 유사 배열 객체, DOM 컬렉션 등은 통일된 규약없이 각자 나름의 구
사람은 계산과 기억을 모두 두뇌에서 하지만 컴퓨터는 연산과 기억을 수행하는 부품이 나눠져 있다. 컴퓨터는 CPU를 사용해 연산하고, 메모리를 사용해 데이터를 기억한다. 메모리는 데이터를 저장할 수 있는 메모리 셀의 집합체이다. 메모리 셀 하나의 크기는 1바이트이며, 컴
프로그래밍 언어의 함수는 수학의 함수와 같은 개념이다. 프로그래밍 언어의 함수는 일련의 과정을 구현한 것을 코드 블록으로 감싸서 하나의 실행 단위로 정의한 것이다. 프로그래밍에서 함수를 사용하는 이유는 다음과 같다.함수는 실행 시점을 개발자가 결정할 수 있고 몇 번
🌼 45 프로미스 자바스크립트는 비동기 처리를 위한 하나의 패턴으로 콜백 함수를 사용하는데 콜백 헬로 인해 가독성이 나쁘고 에러처리가 곤란하다는 단점으로 인해 한계가 있었다. ES6에서는 이러한 한계를 개선하기 위해 또 다른 패턴으로 프로미스를 도입했다. 프로미
🌼27. 배열 자바스크립트에서 배열은 여러 개의 값을 순차적으로 나열한 자료구조로 엄밀히 말에 자료구조에서 통용되는 일반적인 의미의 배열이 아니다. 자바스크립트의 배열은 일반적인 배열의 동작을 흉내 낸 특수한 객체다. 🌼27.2 자바스크립트 배열은 배열이 아니
자바스크립트는 명령형, 함수형, 프로토타입 기반 객체지향 프로그래밍을 지원하는 멀티 패러다임 프로그래밍 언어다. 클래스 기반 객체지향 프로그래밍 언어의 특징인 몇 몇 키워드 등이 없어 자바스크립트는 객체지향 언어가 아니라고 오해하는 경우도 있지만 자바스크립트는 클래
🌼 18.1 일급 객체 다음과 같은 조건을 만족하는 객체를 일급 객체라 한다. 함수가 일급 객체라는 것은 함수를 객체와 동일하게 사용할 수 있다는 의미다. 객체는 값이므로 함수는 값과 동일하게 취급할 수 있다. 일급 객체로서 함수가 가지는 가장 큰 특징은 일반 객
내부 슬롯과 내부 메서드는 자바스크립트 엔진이 구현 알고리즘을 설명하기 위해 ECMAScript 사양에서 사용하는 의사 프로퍼티와 의사 메서드다. ECMAScript 사양에 등장하는 이중 대괄호로 감싼 이름들이 내부 슬롯과 내부 메서드다.내부 슬롯과 내부 메서드는
🌼 11 원시 값과 객체의 비교 원시 타입: 원시 값은 변경 불가능한 값이다. 원시 값을 변수에 할당하면 변수에는 실제 값이 저장되며 원시 값을 다른 변수에 할당하면 원본의 원시 값이 복사되어 전달된다.(Pass by value) 변수와 값은 분리해서 생각해야한다
🌼 37.1 Set Set 객체는 중복되지 않는 유일한 값들의 집합니다. Set 객체는 배열과 유사하지만 다음과 같은 차이가 있다. 이러한 Set 객체의 특성은 수학적 집합의 특성과 일치한다. Set은 수학적 집합을 구현하기 위한 자료구조다. 따라서 Set을 통
🌼33. Symbol? 심벌(Symbol)은 ES6에서 도입된 7번째 데이터 타입으로 변경 불가능한 원시 타입의 값이다. 심벌 값은 다른 값과 중복되지 않는 유일무이한 값이다. 따라서 주로 이름의 충돌 위험이 없는 유일한 프로퍼티 키를 만들기 위해 사용한다. 이
🌼24.클로저 클로저는 난해하기로 유명한 자바스크립트의 개념 중 하나이지만 자바스크립트의 고유의 개념은 아니다. 함수를 일급 객체로 취급하는 함수형 프로그래밍 언어에서 사용되는 중요한 특성이다. outerFunc 함수 내부에서 선언된 innerFunc는 oute
실행 컨텍스트(execution context)는 자바스크립트의 동작 원리를 담고 있는 핵심 개념이다. 실행 컨텍스트를 바르게 이해하면 자바스크립트가 스코프를 기반으로 식별자와 식별자에 바인딩된 값을 관리하는 방식과 호이스팅이 발생하는 이유, 클로저의 동작 방식,
변수 선언과 값의 할당을 2개의 문으로 나누어 표현한 코드와 변수 선언과 값의 할당을 하나의 문으로 표현한 코드는 정확히 동일하게 동작한다.하지만 주의할 점은 변수 선언과 값의 할당의 실행 시점이 다르다는 것이다. 변수 선언은 소스코드가 순차적으로 실행되는 시점인 런타
ES6에서 도입된 제너레이터는 코드 블록의 실행을 일시 중지했다가 필요한 시점에 재개할 수 있는 특수한 함수다. 제너레이터와 일반 함수의 차이는 다음과 같다.제너레이터 함수는 함수 호출자에게 함수 실행의 제어권을 양도할 수 있다. 다시 말해, 함수 호출자가 함수 실
생성자 함수란 new 연산자와 함께 호출하여 객체(인스턴스)를 생성하는 함수를 말한다. 생성자 함수에 의해 생성된 객체를 인스턴스라고 한다. 자바 스크립트는 Object 생성자 함수 이외에도 String, Number 등과 같은 빌트인 생성자 함수를 제공한다. 생성
이벤트 핸들러 어트리뷰트 방식은 함수 호출문 형태를 사용하기 때문에 인수를 전달할 수 있지만 프로퍼티, 메서드 방식은 함수 자체를 등록해야하기 때문에 인수를 전달할 수 없다. 대신 아래의 방법을 사용해서 인수를 전달할 수 있다.이벤트 핸들러 내부에서 함수를 호출하며
DOM은 HTML 문서의 계층적 구조와 정보를 표현하며 이를 제어할 수 있는 API, 즉 프로퍼티와 메서드를 제공하는 트리 자료 구조이며 트리 자료 구조는 노드들의 계층구조(parent-child)로 구성되어 노드 간의 계층적 구조(부자, 형제 관계)를 표현하는 비
🌼 39.2.6 HTML Collection과 NodeList 유사 배열 객체이면서 iterable한 성질을 갖고 있어 for...of문으로 순회할 수 있으며 스프레드 문법을 사용하면 간단히 배열로 변환할 수도 있다. 이렇게 배열로 변환된 객체는 배열에서 제공하는
HTML 문서가 파싱될 때 HTML 요소의 어트리뷰트는 어트리뷰트 노드로 변환되어 요소 노드와 연결된다. 이 때 모든 어트리뷰트 노드는 유사배열 객체이자 이터러블인 NamedNodeMap 객체에 담겨서 요소 노드의 attribute 프로퍼티에 저장된다.Element.
🌼 Event 브라우저는 처리해야 할 특정 사건(event)이 발생하면 이를 감지하여 이벤트를 발생시킨다. 이벤트에 대해 어떤 일을 하고 싶다면 해당하는 타입의 이벤트가 발생했을 때 호출될 함수를 브라우저에게 알려 호출을 위임한다. 이벤트 핸들러: 이벤트가
🌼 40.5 이벤트 객체 이벤트가 발생하면 이벤트에 관련된 다양한 정보를 담고 있는 객체가 동적으로 생성되며 이렇게 생성된 객체는 이벤트 핸들러의 첫번째 인수로 전달되는데, 이 객체를 전달받으려면 매개변수를 명시적으로 선언해야 한다. 🌼 40.5.2 이벤트 객체
자바 스크립트의 런타임 환경인 Node.js의 등장으로 자바 스크립트는 웹 브라우저를 벗어나 서버 사이드 애플리케이션 개발에서도 사용할 수 있는 범용 개발언어가 되었다. 하지만 아직도 자바 스크립트가 가장 많이 사용되는 분야는 클라이언트 사이드의 개발로 브라우저 환경을