1955년에 처음 탄생한 자바스크립트는 기본적으로 HTML과 CSS로 구성되어있는 브라우저 요소에 동적인 움직임을 부여해주는 역할을 한다.
2009년 Node.JS의 탄생으로 자바스크립트 언어만으로도 브라우저에서 뿐만아니라 컴퓨터에서도 파일을 읽고 쓰고, 네트워크 통신을하고, 백엔드 서버까지 만드는 것이 가능해졌다,
자바스크립트 코드가 정상적으로 실행되기 위해서는.
브라우저 자체에 내장되어 있는 자바스크립트 엔진(JavaScript Engine)이 필요하다.
자바스크립트 엔진은 인터프리터 형식으로 런타임 시 코드를 한줄씩 번역해서 실행해준다.
자바스크립트는
그러므로 개발자는 프로그래밍 언어 뿐만 아니라, 프론트엔드에 대한 지식(웹이 무엇인지, DNS는 무엇인지, 웹사이트이 구조는 어떻게 가져와야하는지), 백엔드에대한 지식(어떻게 WEP API를 디자인할 수 있는지, 어떻게 데이터베이스를 구축할 수 있는지, 어떻게 모델들을 만들어야 하는지, http관련지식, 보안 관련 지식)도 갖추어야한다.
자바스크립트를 통해서 필요한 로직을 코딩할 수 있어야 할 뿐만 아니라,
프론트엔드에서는 브라우저에서 제공해주는 다양한 WebAPIs에 대해서도 잘 알고있어야하며(DOM APIs, Network APIs, Audio/Video APIs, Storage APIs, console.log, setTimeout, fetch 등)
백엔드에서는 노드에서 제공해주는 NodeAPI(Console, Crypto, HTTP, File, Os, path, Stream 등)를 사용할 줄 알아야 한다,
💡 컴파일러 Compiler와 인터프리터 Interpreter 차이코드 → 컴파일러 → 실행파일 → 실행
실행하기 전에 모든 작업을 번역하는 작업을 진행해야 함.
장점 ) 한번 컴파일 해놓으면 실행속도는 굉장히 빠른편
단점 ) 컴파일에 일정 시간 소요
ex) Java. C언어
런타임 시 코드를 자바스크립트 엔진이 위에서부터 한줄한줄씩 읽어가며 번역
장점) 컴파일이 없기때문에 초반 실행하는 속도는 빠름
단점) 컴파일방식에 비해 실행속도가 비교적 느릴 수 있음
ex) JavaScript, Python
각각의 엔진들이 JavaScript로 구성된 언어를 번역할 때 따르게되는 표준사항(문법의 규격사항)이다.
엔진이 이 규격에 맞게 구성되어 있기 때문에, 개발자도 ECMAScript의 규격에 맞게 코드를 작성해야 상호 호환이 되어 정상적으로 코드가 작동한다.
대체로 V8로 바뀌고 있는 추세이지만, 사파리와 폭스는 자체의 엔진을 고집하고있다.
버전별로 사용할 수 있는 문법이 달라지며, 현업자는 최신의 버전 문법을 부지런히 익혀야한다.
현재 가장 널리 사용되는 Java Script ES6의 ES6는 ECMAScript의 6번 에디션이라는 것을 의미한다.
참고링크
— 위키피디아 ECMAScript : https://en.wikipedia.org/wiki/ECMAScript
— 버전별 문법 지원 현황 확인 : https://kangax.github.io/compat-table/es5/