Programming Languages/JavaScript(13)
-
[JavaScript] Promise Static Method
프로미스는 5가지 정적 메서드를 제공합니다. Promise.resolve / Promise.reject 이미 존재하는 값을 프로미스 객체로 래핑하는 메서드입니다. const resolved = Promise.resolved(resolve => resolve([1, 2, 3]); resolved.then(console.log); // [1, 2, 3] const rejected = Promise.rejected(new Error("에러 발생")); rejected.catch(console.log); // "에러 발생!" Promise.all 여러 프로미스들을 병렬적으로 처리할 때 사용하는 메서드입니다. const req1 = () => new Promise((resolve) => setTimeout(() ..
2021.05.12 -
[JavaScript] Promise Error Handling
프로미스는 콜백의 에러 처리 문제를 후속 메서드 catch를 통해 해결했습니다. new Promise((resolve, reject) => { throw new Error("에러 발생"); }) .then((resolve) => console.log(resolve)) .catch((err) => console.error(err)); // "에러 발생" 앞서 살펴본 바와 같이 catch 메서드는 then(undefined, reject)와 같아 다음과 같이 사용할 수 있습니다. new Promise((resolve, reject) => { throw new Error("에러 발생"); }) .then((resolve) => console.log(resolve)) .then((_, err) => consol..
2021.05.12 -
[JavaScript] Promise
Promise는 기존의 비동기 처리에서 콜백 헬을 해결하기 위해 나온 ECMAScript 표준 사양입니다. Promise 이전에 비동기 처리를 하기 위해서는 비동기 처리가 완료되면 콜백 함수를 실행하는 방식을 사용하였습니다. 비동기로 가져온 데이터는 외부에서 사용할 수 없기 때문입니다. 이유는 비동기를 처리하는 브라우저의 방식 때문입니다. 이에 대해서는 다른 장에서 자세히 다루도록 합니다. var asyncFn = requestData(apiURL, callback(data) => { requestData(apiURL, callback(data) => { reqeustData(apiURL, callback(data) => { // ... } } }) 이런 식으로 작성하게 되면 코드를 작성하기 힘들고 읽고..
2021.05.12 -
[JavaScript] 가비지 컬렉션
자바스크립트는 눈에 보이지 않는 곳에서 메모리 관리를 수행합니다. 원시값, 함수, 객체 등 우리가 만들고 사용하는 모든 것은 메모리를 차지합니다. 그렇다면 사용하지 않는 것들은 어떻게 될까요? 가비지 컬렉션 기준 자바스크립트는 도달 가능성(reachability) 이라는 개념을 사용해 메모리 관리를 수행합니다. 도달할 수 있는 값은 쉽게 말해 어떻게든 접근하거나 사용할 수 있는 값을 의미합니다. 도달할 수 있는 값은 메모리에 계속 존재합니다. 아래 나오는 값들은 만들어질 때부터 도달 가능하기 때문에, 특별한 이유없이 삭제되지 않습니다. 현재 함수의 지역 변수와 매개변수 중첩 함수의 체인에 있는 함수에서 사용되는 변수와 매개변수 전역 변수 기타 이런 값은 루트(root) 라고 부릅니다. 또한 루트가 참조하..
2020.08.17 -
[JavaScript] 객체 복사
객체와 원시 타입의 근본적인 차이 중 하나는 객체는 참조에 의한 복사에 의해 저장되고 복사된다는 것입니다. 원시값(문자열, 숫자, 불린 값)은 값 자체가 저장되고 복사됩니다. const message = "Hello"; const text = message; 위 코드를 실행하면 아래와 같이 두 개의 독립된 변수에 각각 문자열 "Hello"가 저장됩니다. 그런데 객체의 동작방식은 이와 다릅니다. 변수엔 객체가 그대로 저장되는 것이 아니라, 객체가 저장되어있는 '메모리 주소'인 객체에 대한 '참조 값'이 저장됩니다. 객체는 메모리 내 어딘가에 저장되고, 변수 user엔 객체를 참조할 수 있는 값이 저장됩니다. let user = { name: "John" }; let admin = user; admin.na..
2020.08.12 -
[JavaScript] 객체
자료형 챕터에서 배웠듯이 자바스크립트엔 7가지의 자료형이 있습니다. 이 중 6개는 오직 하나의 데이터(문자열, 숫자 등)만을 담을 수 있어서 '원시형'이라고 부릅니다. 그런데 객체형은 원시형과 달리 다양한 데이터를 담을 수 있습니다. 키로 구분된 데이터 집합이나 복잡한 개체를 저장할 수 있죠. 객체는 자바스크립트의 거의 모든 면에 녹아있는 개념이므로 자바스크립트를 잘 다루려면 객체를 잘 이해하고 있어야 합니다. 객체는 중괄호 { ... } 를 이용해 만들 수 있습니다. 중괄호 안에는 key : value 쌍으로 구성된 프로퍼티(property)를 여러 개 넣을 수 있는데, key엔 문자형, 값엔 모든 자료형이 허용됩니다. 빈 객체를 만드는 방법은 두 가지가 있습니다. let user = new Objec..
2020.08.11