[JS] JavaScript 엔진

dk.han·2022년 10월 7일
0
post-thumbnail

JavaScript 엔진

인터프리터

우리가 작성한 JS코드들이 브라우저 위에서 동작하려면 브라우저 자체에 내장되어있는 자바스크립트 엔진이 꼭 필요하다.
자바스크립트는 런타임 시 코드를 한줄씩 한줄씩 번역하여 실행하기 때문에 동적타입언어 (Dynamic type)이다.
이렇게 작동하게 해주는것을 인터프리터라 한다.
인터프리터는 컴파일링 과정이 없기 때문에 초반 실행속도는 빠르나 실행 중에는 코드를 한줄씩 번역해야하기 때문에 실행속도가 비교적 느릴수 있다. 하지만, 자바스크립트 엔진의 성능이 발전해오고 있기 때문에 성능에 대한 걱정은 할 필요는 없다.

컴파일러

인터프리터와 반대되는 개념은 컴파일러이다.
컴파일러가 필요한 언어에서는 코드 작성 - 컴파일링 - 실행파일 완성 - 컴퓨터에서 실행의 과정을 거친다.
컴파일링을 통해 실행파일을 만드는 과정 때문에 처음 실행 전 컴파일링으로 인해 시간이 오래걸린다는 단점이 존재하지만, 실행파일을 만든 후에는 실행속도가 빠르다는 장점이 있다.
컴파일러가 필요한 언어는 컴파일링 시 코드에 있는 데이터들의 타입이 정해지기 때문에 정적타입(Static Type)이라 부른다.

ECMAScript

브라우저마다 다른 자바스크립트 엔진을 가지고 있다.

  • 크롬, 엣지, nodeJS : V8
  • 사파리 : JavaScript Core
  • 파이어폭스 : SpiderMonkey

각각의 자바스크립트 엔진들이 JS 코드를 이해, 번역, 실행하기 위해서는 공통된 규격이 필요하다.
그것을 정의한 것이 바로 ECMAScript이다. JS 문법을 규격화하고, 표준사항들을 명시한 것이다.
자바스크립트 엔진들은 ECMAScript 기반으로 설계되어져 있기 때문에 엔진은 다르지만 서로 호환되어 JS 코드가 작동 가능하다.
ECMAScript의 버전마다 새로운 문법이나 개선사항이 추가되지만 외울 필요는 없다. ES6 버전에서 가장 큰 변화가 일어났고 지금 가장 많이 쓰는 JS 문법이다.

Reference

자바스크립트 마스터리 (ES6+ 최신 문법)

0개의 댓글