JavaScript는 CallStack, EventQueue 이용하여 Single Thread 기반으로 비동기적으로 동작한다. Single Thread 기반에서는 단 하나의 CallStack만 존재하기 때문에 네트워크 요청 등 비용이 많이 드는 연산을 수행하게 되면
var 는 function 스코프를 가지고, let과 const는 block 스코프를 가진다.Function scope 부터 하나씩 살펴보자.function scope 란 함수에서 선언된 변수는 내부에서만 유효하고, 외부에서는 참조할 수 없다는 의미이다.위와 같이, t
실행 컨텍스트는 Javascript 언어로 작성된 코드를 실행하기 위해 필요한 환경이다. 함수가 호출되면, 새로운 실행 컨텍스트는 생성되어 CallStack 에 쌓이고, 함수 실행이 끝나면 제거된다.위와 예제를 통해 살펴보면, 우선 전역에서 실행되는 환경을 제공하기 위
이 글은 You Don't Know JS 서적을 참고하여 작성하였습니다.Javascript 에서의 this는 다른 언어와 다르게 헷갈리는 구석이 있다.그럼에도 불구하고 this를 사용하는 이유는 무엇일까?물론 함수에 파라미터를 통해 this를 어느 정도 대체할 수 있지
객체는 선언적(리터럴) 방식과 생성자 형식으로 생성할 수 있다.자바스크립트 함수는 호출 가능한 특성이 있는 일급 객체이다.객체 내부는 프로퍼티로 이루어져 있는데, key-value 형태로 key를 통해서 프로퍼티 값이 있는 곳을 참조할 수 있다.여기서 주의해야 할 점은
자바스크립트 모든 객체는 \[\[Prototype]] 내부 프로퍼티를 가진다. \[\[Prototype]] 프로퍼티는 상위 객체와 연결을 해주는 역할을 한다.앞서 \[\[Get]] 과정으로 객체에서 프로퍼티를 탐색한다고 말했었다. 찾고자 하는 프로퍼티가 현재 객체에 없
이 글은 You Don't Know JS 서적을 참고하여 작성하였습니다.프로그램을 개발하다 보면, 어느 부분은 지금 실행되고 다른 부분은 나중에 실행되면서 발생한다. 이러한 지금과 나중에 해당하는 부분 사이의 관계가 바로 비동기 프로그램의 핵심이다.좀 더 구체적으로 살
Promise는 지금 또는 나중 시점에 상관없이 동일한 결과를 낼 수 있도록 정규화해주는 도구이다. Promise를 사용하면 미랫값(결과값)을 추론할 수 있게 되는 이점이 있다.위 예제와 같이, 프라미스가 시점에 상관없이 같은 결과를 도출해주기 때문에 미랫값인 valu
일반적인 함수는 실행될 때 제어권을 호출부에 넘기지 않고 완전하게 실행된다. 선점형 멀티스레드 환경에서는 스레드의 제어권이 바뀌면서 중간에 다른 함수가 실행될 수는 있겠으나, 자바스크립는 단일 스레드이다. 하지만, 자바스크립트는 협동적 동시성을 달성하기 위해 제너레이터
브라우저에서 지원하는 임포트 모듈라 방식Nodejs 에서 지원https://www.sitepoint.com/understanding-es6-modules/
원래의 함수가 요구하는 인자의 수(Function.arity, 또는 Function.length)가 모두 전달될 때까지 재귀적으로 curry 함수를 생성한다. 그리고 함수 호출에 필요한 인자가 모두 전달되면 curry 함수를 만들지 않고 원래의 함수를 호출한다.