컴퓨터는 0과 1밖에 이해하지 못한다는 것은 누구나 아는 사실이다. 하지만 컴퓨터는 High-level language인 자바스크립트 파일을 이해하고 명령을 수행할 수 있다. 그렇다면 어떻게 자바스크립트 파일을 컴퓨터가 해석하는지 궁금할 것이다. (궁금해야 한다.)
인라인 캐싱 (inline caching) 인라인 캐싱이란 컴파일하는 과정에서 수행되는 기능이다. 일단 이름만 보고 이게 무엇인지 추측해보자 먼저 C나 C++ 언어에서 인라인 함수라는 문법이 있다. 이는 함수의 호출을 함수 그 자체 내용의 복사본으로 직접 치환하여 오
스택 오버플로우(Stack Overflow) 앞서서 콜 스택은 간단한 변수나 작업들을 저장하여 코드의 어느 부분을 실행하는지 트래킹 하기 위해 설계된 공간이라고 배웠다. 스택 오버플로우란 말 그대로 스택이 오버플로우 됐다는 뜻이다. 특정 작업을 수행하면서 pop 하지
자바스크립트는 하나의 콜 스택을 가지는 싱글 스레드 프로그래밍 언어이다. 싱글 스레드라는 것은 한 번에 하나의 명령 집합만이 실행된다는 것을 의미한다. 그렇기 때문에 자바스크립트는 동기식(Synchronous)으로 작업을 처리할 수 밖에 없는데 , 이로 인해서 많은
2009년까지는 브라우저에서만 자바스크립트를 쓸 수 있었지만 Node.js 가 탄생하면서 이야기가 달라졌다. 앞선 글에서 자바스크립트 런타임이란 브라우저에서 사용자에게 제공하는 것이라고 하였다. Node.js 는 자바스크립트 런타임 중 하나로 브라우저 밖에서도 자바스
실행 컨텍스트(Execution Context) 실행 컨텍스트란 자바스크립트 코드가 실행되고 있는 범위에 대한 정보를 저장하고 있는 객체이다. 자바스크립트 엔진은 스크립트 혹은 함수를 실행할 때 새로운 컨텍스트를 만들고 콜 스택에 쌓는다. 다음과 같은 코드가 있다
앞선 글에서 우리는 많은 실행 컨텍스트들을 만들어서 코드를 실행한다고 배웠다. 그렇다면 이렇게 많은 실행 컨텍스트들에서 변수는 어떻게 관리될까? 변수 환경 (Variable Environment) 각각의 실행 컨텍스트 들에는 변수 환경 이라는 것이 존재한다. 이 때
자바스크립트는 함수 스코프를 가지고 있다. 함수를 생성할때마다 새로운 실행 컨텍스트가 생성되고 각 실행 컨텍스트마다 고유한 변수 환경을 가지고 있다. 그러나 대부분의 다른 프로그래밍 언어에는 블록 스코프라는 것이 존재한다. 그것들의 차이는 무엇일까? 위와 같은 자바스
전역 변수 앞선 내용에서 스코프 체인을 배웠다. 글로벌 스코프에서 변수를 선언하면 어떤 스코프에서도 접근이 가능하고 이를 전역 변수 라고 한다. 우리는 이러한 전역 변수의 사용을 최소화 해야 하는 2가지 이유를 알아보자. 1 . 메모리 공간의 낭비 우리는 제한된 메
this this는 자바스크립트의 굉장히 혼란스러운 개념 중 하나이다. 이번 시간에는 this에 대해서 알아보자. > this is the object that the function is a property of. this 는 위에 써있는 대로 함수를 prope