Javascript에 대한 몇 가지

February 22, 2015

자바스크립트는 인터프리터 언어이다.

html 파일을 파싱하다가 script 태그를 만나게 되면 한 줄씩 한 줄씩 기계어로 번역 및 실행을 한다.

자바스크립트는 호이스팅이 있다.

함수 선언부는 모두 위로 끌어올려져 미리 파싱을 한다. 다음은 변수 선언부의 호이스팅이 일어난다. 인터프리터 언어지만 함수 실행 구문을 먼저 쓰고, 함수를 선언해도 동작한다.

자바스크립트의 표준은 ECMAScript (ES)이다.

언어는 변한다. 어떤 것은 추가되고 어떤 것은 삭제된다. HTML/CSS에는 W3C가 있다면 자바스크립트에는 ECMAScript가 있다. CSS와 마찬가지로 브라우저에 따라서 동작하는 것이 있고, 동작하지 않는 것이 있다.

자바스크립트에서 CommonJS와 AMD

이 둘은 모듈을 어떻게 정의할 것인지에 대한 명세를 만든다. CommonJS는 상대적으로 서버 친화적이다. node.js가 그 예다. 스콥은 파일 단위로 정의하며 필요한 경우 require 함수를 통해 로드한다. AMD는 브라우저 친화적이다. require.js가 그 예이며 모듈을 비동기로 로드한다. 브라우저 환경에서는 파일 단위의 스콥이 통하지 않으므로 클로저를 통한 전역변수 문제를 해결한다.

자바스크립트는 힙 메모리를 사용하며 가비지 컬렉터가 있다.

메모리는 데이터/힙/스택 영역으로 나눈다. 데이터 영역과 스택 영역은 컴파일러가 미리 공간을 예측하고 할당하는데 사용하는 영역이고, 힙은 런타임 중에 크기가 결정될 수 있는 요소들이 올라갈 수 있는 공간이다. 자바스크립트는 객체, 문자열등을 저장하기 위해 힙 영역을 사용하며 가비지 컬렉터가 판단하여 메모리를 관리한다.

call, apply 그리고 bind

셋 모두 Function 객체의 프로토타입 함수다. call과 apply는 함수를 실행하며 bind는 새로운 함수를 반환한다. 셋은 모두 실행 컨텍스트를 임의로 지정할 수 있다.

Comments

comments powered by Disqus