
promise를 응용하여 로직을 하나 구현해보고자 한다! 일단 원하는 로직은 다음과 같다. a가 콘솔에 먼저 찍히고 일정 시간 뒤에 b가 찍히는 로직을 만들고 싶은 상황 해당 로직을 구현하려면 다음과 같이 구현하면 된다. const delay = (time) => { return new Promise((resolve, reject) => { setTimeout(() => { resolve(); },time * 1000); }); } const run = async () => { console.log('a'); try { await delay(3); } catch (err) { console.log('에러 발생'); return; } console.log('b'); } console.log(run()); ..

this란? 함수가 어떻게 호출되는지에 따라 동적으로 결정되는 녀석(?)이다. this의 목적 작성된 코드를 여러 목적으로 재사용하기 위해 존재 this의 특징 전역 및 함수 바디에서 사용 가능하다. class 안에서 사용하는 this는 생성자 함수에서 사용하는 this와 동일하다. 전역에서의 this 브라우저 환경에서 this를 전역에서 사용하면 이 this는 전역 객체인 window객체를 가리킨다. 그래서 전역에서 const, let, var 없이 valueA라는 변수를 사용할 경우 window.valueA와 같다. 일반 함수에서의 this this를 사용하는 일반 함수를 호출하면 this는 전역 객체인 window객체를 가리킨다. 단, 함수 내에서 'use strict'키워드를 사용하면 this는 ..

프로그래밍 언어는 값을 자료형(type)으로 분류한다. 이 자료형에 따라 값을 구분하여 알고리즘을 구현하는 만큼 자료형은 매우 중요한 기초지식이다. 자바스크립트의 경우 이 자료형을 크게 두 가지로 분류한다. 우선 기본 타입이 되는 원시타입(primitive data type)이 있고 참조타입(reference data type)이 있다. 원시타입(primitive data type) 값이 변수에 할당될 때 메모리 상으로 고정된 크기로 저장된다. const a = 4; 예를 들어 위와 같이 변수 a에 값이 할당되었을 때 숫자4는 8바이트만큼의 메모리 공간을 마련하여 직접 숫자 4를 보관한다. 이처럼 고정된 공간에 보관된 원시 타입인 값은 불변 값(immutable value)의 특징을 갖는다. 원시타입인 ..

타 저수준 언어에서는 메모리 관리를 따로 해야 하지만 자바스크립트와 같은 고수준 언어는 메모리 관리를 자동으로 수행해준다. 가비지 컬렉션 객체, 함수 등은 메모리를 차지하는데 더 이상 쓸모 없는 것들은 메모리에서 삭제 처리하는 것을 의미하며 그 주체를 가비지 컬렉터라고 한다. 가비지 컬렉션의 알고리즘 자바스크립트의 가비지 컬렉션은 **도달가능성(reachability)**이라는 개념으로 메모리 관리 수행 도달 가능성이 있는 값이란 접근 및 사용이 가능한 값을 의미한다. 예를 들어 A라는 메모리가 있는데 A를 통해 B라는 메모리에 접근할 수있다는 것은 B는 A에 참조된다는 것을 의미하며 B는 접근 및 사용이 가능하는 것이다. 이러한 것들은 메모리에서 삭제되지 않는다. 근본적으로 도달가능성이 있는 값 1. ..

pull-request를 할 수 있는 것은 약 2가지 경우가 있다. 하나는 원격 저장소의 특정 프로젝트의 버전들을 직접 crud할 수 있는 권리를 갖고 있는 경우가 있다. 자신이 작업한 로컬 저장소의 브랜치를 원격 저장소의 브랜치와 병합을 할 때 이에 대한 다른 사람들의 피드백을 받고 싶을 때 pull-request를 이용할 수 있다. 또 하나는 첫번째와 같은 권리를 갖고 있지 않는 경우이다. 이때 자신은 해당 원격 저장소의 소스코드를 fork를 통해 해당 소스코드에 영향을 주지 않고 자신이 crud할 수 있는 복제된 소스코드를 갖게 된다. 그리고 자신이 crud한 버전들을 참고하여 자신의 소스코드를 pull해달라는 요청을 할 때 pull-request를 이용할 수 있다. 필자는 전자의 경우를 정리하여 ..

타 깃헙 유저의 특정 오픈소스를 또 다른 깃헙 유저의 원격 저장소에 복제하는 것을 의미한다. 한편 B유저의 원격 저장소의 특정 오픈소스에 새로운 버전이 push되었을 경우 내가 복제한 오픈소스 페이지에 다음과 같이 알림이 뜬다. This branch is 커밋 갯수 commits ahead of B의 원격저장소 명: B의 원격저장소 리모트 브랜치명 그리고 pull request 및 compare라는 버튼이 생긴다. pull request 내가 복제한 오픈소스의 버전과 원작자의 오픈소스의 버전을 동기화시키는 것을 의미한다. 이를 통해 내가 복제한 오픈소스의 버전도 원작자의 오픈소스의 버전과 동일해진다. compare 원작자의 오픈소스와 B유저가 복제한 오픈소스 간의 파일 내용 및 버전의 차이점을 비교해준다..