해당 포스트는 "모던 자바스크립트 Deep Dive"라는 책을 읽고, 나름대로 정리한 부분에 대한 내용을 작성하려 한다.Deep Dive 책은 자바스크립트에 대한 기본 개념과 동작원리를 A to Z까지 아주 자세하게 서술하고 있으며, 이를 통해 자칫 모르고 넘어갈 수
변수는 프로그래밍 언어에서 데이터를 관리하기 위한 핵심 개념이다.다음 코드를 보며 변수는 어떤 역할을 수행하며, 어떻게 컴퓨터에 작용하게 되는지 알아보자.위 식을 계산하기 위해서는 우선 10, 20, +가 어떤 것을 뜻하는지 알아야 한다. 또한 10 + 20 이 어떤
값은 식(표현식)이 평가되어 생성된 결과를 말한다. 평가란 식을 해석해서 값을 생성하거나 참조하는 것을 의미한다.변수에, 즉 특정 메모리에 저장된 할당되는 것은 '값'이다.이러한 값은 다양한 방법으로 생성할 수 있다. 가장 기본적인 방법은 리터럴을 사용하는 것이다.리터
데이터 타입은 값의 종류를 말한다.자바스크립트 ES6는 7개의 데이터 타이을 제공하며, 7개의 데이터 타입은 원시 타입과 객체 타입으로 분류된다.ECMAScript 사양에 따른 숫자 타입의 값은 배정밀도 64비트의 부동소수점 형식을 따른다. 즉, 모든 수를 실수로 처리
연산자는 하나 이상의 표현식을 대상으로 산술, 할당, 비교, 논리, 타입, 지수 연산 등을 수행해 하나의 값을 만든다. 이때 연산의 대상자를 피연산자라고 한다. 피연산자는 값으로 평가될 수 있는 표현식 이어야 하며, 피연산자와 연산자의 조합으로 이루어진 연산자 표현식도
블록문은 0개 이상의 문을 중괄호로 묶은 것으로, 코드 블록 또는 블록으로 부르기도 한다. 자바스크립트는 블록문을 하나의 실행 단위로 취급한다.조건문은 주어진 조건식의 평가 결과에 따라 코드 블록(블록문)의 실행을 결정한다. 조건식은 boolean 값으로 평가될 수 있
타입 변환 개요 >개발자가 의도적으로 값의 타입을 변환하는 것을 명시적 타입 변환 또는 타입 캐스팅이라 한다.
원시 값을 제외한 나머지 값(함수, 배열, 정규 표현식 등)은 모두 객체다.자바스크립트는 객체 기반의 프로그래밍 언어이며, 자바스크립트를 구성하는 거의 모든 것이 객체다.객체는 0개 이상의 프로퍼티로 구성된 집합이며, 프로퍼티는 키와 값으로 구성된다.프로퍼티에 접근하는
함수란? 프로그래밍 일련의 과정을 문으로 구현하고 코드 불록으로 감싸 하나으 ㅣ실행 단위로 정의한 것. 함수 내부로 입력을 전달받는 변수를 매개변수(파라미터), 입력을 인수(아규먼트), 출력을 반환값(리턴 데이터)라고 한다. 또한 함수는 값이며, 여러 개 존재할 수 있
원시 값: 원시 타입의 값, 변경 불가능한 값이다.원시 값을 변수에 할당하면 변수에는 실제 값이 저장된다.원시 값을 갖는 변수를 다른 변수에 할당하면 원본의 원시 값이 복사되어 전달된다. 이를 값에 의한 전달이라 한다.객체: 객체(참조) 타입의 값, 변경 가능한 값.객
스코프란? 모든 식별자(변수 이름, 함수 이름, 클래스 이름 등)는 자신이 선언된 위치에 의해 다른 코드가 식별자 자신을 참조할 수 있는 유효 범위가 결정된다. 이를 스코프라 한다. 즉, 스코프는 식별자가 유효한 범위를 말한다.
변수는 생물과 유사하게 생성되고 소멸되는 생명 주기가 있다. 변수에 생명 주기가 없다면 한번 선언된 변수는 프로그램을 종료하지 않는 한 영원히 메모리 공간을 점유하게 된다.지역 변수의 생명 주기는 함수의 생명 주기와 일치한다. 즉, 함수 내부에서 선언된 지역 변수는 해
var 키워드의 단점을 보완하기 위해 ES6에서는 새로운 변수 선언 키워드인 let과 const를 도입했다.var 변수의 문제점: 변수 중복 선언 허용, 함수 레벨 스코프, 변수 호이스팅let 키워드로 이름이 같은 변수를 중복 선언하면 문법 에러가 발생한다.let 키워
내부 슬롯과 내부 메서드 내부 슬롯과 내부 메서드는 자바스크립트 엔진의 구현 알고리즘을 설명하기 위해 ECMAScript에서 사용하는 의사 프로퍼티와 의사 메서드이다. 이중 대괄호([[ ...]])로 감싼 이름들이 내부 슬롯과 내부 메서드이다. >내부 슬롯과 내부 메
ES5부터 추가된 모드. 자바스크립트 언어의 문법을 좀 더 엄격히 적용하여 오류를 발생시킬 가능성이 높거나 자바스크립트 엔진의 최적화 작업에 문제를 일으킬 수 있는 코드에 대해 명시적인 에러를 발생시킨다.ESLint와 같은 린트 도구를 사용해도 이와 같은 효과를 얻을
자바스크립트 객체의 분류 표준 빌트인 객체 ECMAScript 사양에 정의된 객체를 말하며, 애플리케이션 전역의 공통 기능을 제공한다. => 자바스크립트 실행 환경(브라우저 또는 Node.js)과 관계없이 언제나 사용할 수 있다. 전역 객체의 프로퍼티이기 때문에 별도의
this 키워드 자신이 속한 객체를 가리키는 참조할 수 있는 식별자.
해당 소스코드의 타입에 따라 실행 컨텍스트를 생성하는 과정과 관리 내용이 다르다.전역 코드전역 코드는 전역 변수를 관리하기 위해 최상위 스코프인 전역 스코프를 생성해야 한다.var 키워드로 선언된 전역 변수와 함수 선언문으로 정의된 전역 함수를 전역 객체의 프로퍼티와
클로저는 함수와 그 함수가 선언된 렉시컬 환경과의 조합이다.이 두함수의 x 출력값이 다르게 나오는 이유는 자바스크립트가 렉시컬 스코프를 따르는 프로그래밍 언어이기 때문이다.자바스크립트 엔진은 함수를 어디서 호출했는지가 아니라 함수를 어디에 정의했는지에 따라 상위 스코프
자바스크립트는 프로토타입 기반 객체지향 언어이다.ES5에서는 클래스 없이도 다음과 같이 생성자 함수와 프로토타입을 통해 객체지향 언어의 상속을 구현할 수 있다.ES6에서 도입된 클래스는 기존 프로토타입 기반 객체지향 프로그래밍보다 클래스 기반 프로그래밍에 익숙한 프로그
생성자 함수에서 생성자 함수가 생성할 인스턴스의 프로퍼티를 정의하는 것과 마찬가지로 constructor 내부에서 this에 인스턴스 프로퍼티를 추가한다. 이로써 클래스가 암묵적으로 생성한 빈 객체, 즉 인스턴스에 프로퍼티가 추가되어 인스턴스가 초기화된다.클래스를 통한
ES6 이전의 모든 함수는 일반 함수로서 호출할 수 있는 것은 물론 생성자 함수로서 호출할 수 있다.이와 같은 가능 호출수가 많다면 불필요한 프로토타입 객체 생성에 따라 성능 면에서 문제를 일으킬 수 있다.또한 사용 목적에 따라 명확한 구분이 없으므로 호출 방식에 따라
ES6에 도입된 7번째 데이터 타입으로 변경 불가능한 원시 타입의 값이다. 심벌 값은 다른 값과 중복되지 않는 유일무이한 값이기 때문에, 주로 이름의 충돌 위험이 없는 유일한 프로퍼티 키를 만들기 위해 사용한다.심벌 값은 Symbol 함수를 호출하여 생성한다. 이 때