Promise 는 ES6 에서 추가되었으며, 자바스크립트의 비동기 작업을 처리하기 위해 사용한다. </br> 기존의 자바스크립트에서는 비동기 작업을 처리하기 위해 콜백 방식을 사용하고 있었다. 하지만 콜백 방식은 여러 단계의 비동기 작업을 처리하는 경우 콜백에서 콜백을 호출하는 코드가 반복되면서 관리가 복잡해지고, 에러 핸들링이 필요한 ...
이벤트 루프
자바스크립트는 이벤트 루프에 기반한 동시성(concurrency) 모델을 가지고 있다. 자바스크립트에서 호출된 함수는 콜 스택(Call Stack) 으로 푸쉬되어 처리 되는데, 단일 콜 스택을 사용하기 때문에 (자바스크립트가 싱글 쓰레드라고 얘기되는 것은 이 부분과 연관된다.) 현재 콜 스택으로 푸쉬 된 함수에서 어떤 이벤트를 처리하기 위해 이벤트의...
클래스
클래스는 ES6 에서 추가된 키워드로 기존의 prototype 기반의 방식을 좀 더 명료하게 사용하기 위한 것이며, 새로운 객체지향 상속 모델을 제공하는 것은 아니다. 클래스 정의 함수와 마찬가지로 선언적 방식과 변수에 할당하는 방식을 사용할 수 있다. 하지만 클래스는 함수와 달리 호이스팅이 일어나지 않는다. //선언적 방식 class A {...
프로토타입 체인
자바스크립트의 OOP는 프로토타입을 통해 이루어진다. 자바스크립트의 모든 객체는 기본 객체 타입인 Object 객체가 최상위 타입이 되는데 객체를 생성해보면 Object 객체의 프로토타입에 등록되어 있는 함수인 toString, valueOf 등을 사용할 수 있는 것을 확인할 수 있다. 프로토타입 객체는 생성한 각각의 객체에서부터 최상위 객체인 Obj...
this
this 자바 스크립트에서 this 는 기본적으로 전역 객체를 가리킨다. (node.js : global, browser : window) 함수 내에서 this 를 참조하더라도 마찬가지로 전역 객체가 찍히게 된다. this는 기본적으로 전역 객체를 가리키도록 되어있기 때문이다. function a() { console.log(this); ...
호이스팅
1. 호이스팅이란? 호이스팅이란 var 변수 또는 함수의 선언을 끌어올리는 것을 말한다. 변수를 참조하거나 함수를 호출하기 위해서는 그 코드보다 선언의 코드가 먼저 위치해야 한다. 하지만 자바스크립트에서는 호이스팅으로 인해 var 변수나 함수를 선언하기 전에 미리 참조하거나 실행하는 코드를 작성하더라도 선언이 최상위 위치로 끌어올려지기 때문에 에...