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