변수 변수variable는 값을 저장하기 위해 필요하다. 변수는 메모리 공간 자체에 저장되며 값이 아닌 주소를 기억하고 있다. 변수의 이름을 식별자identifier이라 한다. 변수를 선언할 때는 var, let, const 키워드를 사용한다. 모든 식별자는 실행
데이터 타입은 값의 종류. 7개의 원시 타입과 객체 타입으로 나뉜다.숫자타입은 모든 수를 실수로 처리.문자열 타입은 텍스트 데이터를 나타내는데 사용.3-1 \`(백틱)을 활용한 템플릿 리터럴은 줄바꿈과 모든 공백이 그대로 적용.불리언 타입은 true 와 false 뿐이
제어문은 조건에 따라 코드 블록을 실행, 반복 실행 할 때 사용.if...else문은 주어진 조건식(불리언 값으로 평가 가능한)의 참 거짓에 따라 실행할 코드 블록을 결정.{ } 안의 문이 하나라면 { } 생략 가능, else if는 여러개 사용 가능. 대부분은 삼항
자바스크립트의 모든 값은 타입이있다. 개발자가 의도적으로 타입을 변환하는 것을 명시적 타입 변환, 타입 캐스팅이라 하며 의도와 상관 없이 표현식 평가 도중 변환되는 것을 암묵적 타입 변환, 타입 강제 변환이라 한다.암묵적 타입 변환 예시명시적으로 문자열 타입 변환에는
자바스크립트는 객체 Object 기반의 프로그래밍 언어이며, 원시 값을 제외한 나머지 값은 모두 객체이다. 원시 타입은 변경 불가능 하지만 객체는 변경 가능한 값이다.객체는 0개 이상의 프로퍼티 (객체의 상태를 나타내는 값)로 구성된 집합이다.프로퍼티는 키와 값으로 구
원시 타입primitive type의 값은 변경 불가능한 값immutable value이다. 변수 값은 재할당을 통하여 변경할 수 있으나 메모리 주소 자체는 변경되지 않는다.변수에 원시 값을 갖는 변수를 할당하면 할당되는 변수에 원시 값이 복사되어 전달. 이를 값에 의
함수는 일련의 과정을 문으로 구현하고 코드 블록으로 감싸서 하나의 실행 단위로 정의한 것. 함수 내부로 입력을 전달받는 변수를 매개변수parameter, 입력을 인수argument, 출력을 반환값return value라 한다. 함수는 필요할 때 여러번 호출할 수 있으므
모든 식별자는 자신을 참조할 수 있는 유효 범위가 결정된다. 이를 스코프라 한다.스코프는 자신이 선언된 위치에 의해 유효 범위, 스코프가 결정된다. 코드의 가장 바깥 영역에서의 스코프에서 만들어진 변수를 전역 변수라 한다. 전역 변수는 어디서든 참조가 가능하다. 함수
지역 변수의 생명 주기는 함수의 생명 주기와 일치한다. 호이스팅은 지역 (스코프) 단위로 동작한다.var 키워드로 선언한 전역 변수의 생명 주기는 객체의 생명 주기와 일치한다.전역변수는 유효 범위가 크고, 유효범위는 클수록 코드의 가독성은 나빠지고 의도와 다르게 변경될
var 키워드는 함수 레벨 스코프를 가지며 호이스팅, 변수 중복 선언 허용 등의 문제로 단점이 많다.ES6 부터 도입된 let은 변수의 중복 선언이 금지되어있다. 또한 let은 블록 레벨 스코프로 함수 뿐 아니라 if, for, while문 등등을 지역 스코프로 인정하
내부 슬롯과 내부 메서드는 자바스크립트의 엔진 구현 알고리즘을 설명하기 위해 사용하는 의사 프로퍼티와 의사 메서드이다.자바스크립트 엔진은 프로퍼티를 생성할 때 프로퍼티의 상태를 나타내는 프로퍼티 어트리뷰트를 기본 값으로 자동 정의한다. 프로퍼티 어트리뷰트의 내부 상태
new 연산자와 함께 object 생성자 함수를 호출하여 빈 객체를 생성, 반환한다. 생성자 함수란 new 연산자와 함께 호출하여 객체(인스턴스)를 생성하는 함수를 말한다.동일한 프로퍼티 구조를 가지고 있는 객체를 여러개 생성할 때 생성자 함수는 유용하다. 마치 템플릿
다음과 같은 조건을 만족하는 객체를 일급 객체라 하고, 함수는 다음 조건을 모두 만족하므로 일급 객체이다1-1 무명의 리터럴로 생성할 수 있다. 즉, 런타임에 생성이 가능하다.1-2 변수나 자료구조(객체, 배열 등)에 저장할 수 있다.1-3 함수의 매개변수에 전달할 수
상속은 자바스크립트, 객체지향 프로그래밍의 핵심 개념으로 어떤 객체의 프로퍼티 또는 메서드를 다른 객체가 상속받아 그대로 사용할 수 있는 것을 말한다. 자바스크립트는 프로토타입을 기반으로 상속을 구현한다.모든 객체는 하나의 프로토타입을 갖고 있으며 \_\_prototy
자바스크립트는 객체의 프로퍼티에 접근하려고 할 때 해당 객체에 접근하려는 프로퍼티가 없다면 \[Prototype] 내부 슬롯의 참조를 따라 자신의 부모 역할을 하는 프로토타입의 프로퍼티를 순차적으로 검색한다. 이를 프로토타입 체인이라 하며 상속을 구현하는 메커니즘이다.
표준 빌트인 객체란 ECMAScript 사양에 정의된 객체를 말한다. 자바스크립트 실행 환경과 관계없이 언제나 사용할 수 있다. Object, String, Number, Date, Math 등 40여개를 제공한다. Math, Reflect, JSON을 제외한 표준 빌
this는 자신이 속한 객체 또는 자신이 생성할 인스턴스를 가리키는 자기 참조 변수다. this를 통해 자신이 속한 객체 또한 자신이 생성할 인스턴스의 프로퍼티나 메서드를 참조할 수 있다.단, this가 가리키는 값, 즉 this 바인딩은 함수 호출 방식에 의해 동적으
ECMAScript 사양은 소스크드를 4가지 타입으로 구분한다. 전역코드, 함수코드. eval코드, 모듈코드. 모든 소스코드는 실행에 앞서 평가 과정을 거친다. 즉, '소스코드의 평가' 와 '소스코드의 실행' 과정으로 나누어 처리한다. 소스코드 평가 과정을 실행 컨텍스
클로저의 공식적인 정의는 함수와 그 함수가 선언된 렉시컬 환경과의 조합이다. 다만, 일반적으로 외부 함수보다 중첩함수가 더 오래되는 경우 중첩 함수는 이미 생명 주기가 종료된 외부 함수를 참조할 수 있고 이러한 중첩함수를 클로저라 부른다. 함수의 실행 컨텍스트에서 제거
클래스는 생성자 함수와 매우 유사하지만 몇가지 다른 점이 존재한다. 1-1 new 연산자 없이 호출하면 에러. 생성자 함수는 일반 함수로서 호출.1-2 클래스는 상속을 지원하는 extends와 super 키워드를 제공.1-3 클래스는 호이스팅이 발생하지 않는 것 처럼
ES6 이전까지의 모든 함수는 일반 함수로서 호출할 수 있는 것은 물론 생성자 함수로서 호출할 수 있었다. 이것은 실수를 유발시킬 수 있으며 성능면에서도 손해이다. 이러한 문제를 해결하기 위해 ES6에서는 함수를 사용 목적에 따라 일반함수, 메서드, 화살표 함수로 구분
배열은 여러 개의 값을 순차적으로 나열한 자료구조이며 기본적으로 객체 타입이다. 배열이 객체와 가지는 차이는 값의 순서(index)가 존재한다는 점이며 그 순서에 따라 length 프로퍼티로 순차적으로 값에 접근하기에 적합하다. 배열이 가지고 있는 값을 요소elemen
Number 객체는 생성자 함수 객체이다. 인수를 전달하지 않고 new 연산자와 함께 호출하면 \[NumberData]내부 슬롯에 0을 할당한 Number 래퍼 객체를 생성한다. new 연산자를 사용하지 않고 생성자 함수를 호출하면 인스턴스가 아닌 숫자를 반환한다.Nu
String 생성자 함수의 인수로 문자열을 전달하면서 new 연산자와 함께 호출하면 \[StringData]내부 슬롯에 인수로 전달받은 문자열을 할당한 String 래퍼 객체를 생성한다. 이 래퍼 객체는 배열과 마찬가지로 length 프로퍼티와 인덱스를 나타내는 숫자
Symbol.iterator를 프로퍼티 키로 사용한 메서드를 직접 구현하거나 프로토타입 체인을 통해 상속받은 Symbol.iterator 메서드를 호출하면 이터레이터 프로토콜을 준수한 이터레이터를 반환한다. 이러한 규약을 이터러블 프로토콜이라하며, 이 규약을 준수한 객
스프레드 문법 ... 은하나로 뭉쳐 있는 여러 값들의 집합을 펼쳐서 개별적인 값들의 목록으로 만든다. for...of문으로 순회할 수 있는 이터러블에 한정하여 사용할 수 있다. 스프레드 문법의 결과는 값이 아닌 값들의 목록이므로 변수에 할당할 수 없다.함수의 인수 목록
디스트럭처링 할당 (구조 분해 할당)은 구조화된 배열과 같은 이터러블 또는 객체를 destructuring(비구조화, 구조파괴)하여 1개 이상의 변수에 개별적으로 할당하는 것을 말한다. 배열 디스트럭처링 할당의 대상은 이터러블이어야 하며, 할당 기준은 배열의 인덱스이다
파싱이란 프로그래밍 언어의 문법에 맞게 작성된 텍스트 문서를 읽어 들여 실행하기 위해 텍스트 문서의 문자열을 토큰으로 분해하고 토큰에 문법적 의미와 구조를 반영하여 트리구조의 자료구조인 파스트리를 생성하는 일련의 과정을 말한다.렌더링이란 HTML, CSS, JS로 작성