프로그래밍이란 요구사항의 집합을 분석해서 적절한 자료구조와 함수의 집합으로 변환 후, 그 흐름을 제어하는 것
ES1 - 1997
ES2 - 1998
ES3 - 1999
ES5 - 2009
ES6 - 2015
ES7 - 2016
ES8 - 2017
ES9 - 2018
ES10 - 2019
ES11 - 2020
ES12 - 2021
1999년, JS를 이용해 서버와 브라우저가 비동기 방식으로 데이터를 교환할 수 있는 통신 기능
2006년, DOM(Document Object Model)을 더욱 쉽게 제어할 수 있게 되었고 크로스 브라우징 이슈도 어느 정도 해결
2008년, 구글의 V8 JS Engine은 JS 동작을 더욱 빠르게 웹 어플리케이션에서 구축 가능
과거 웹 서버에서 수행되던 로직들이 대거 클라이언트 사이드로 이동하면서 FE 개발이 주목
2009년, V8 JS Engine으로 빌드된 JS런타임 환경
웹 브라우저 이외의 환경에서도 JS가 동작하게 함
서버 사이드 어플리케이션 개발에 주로 사용, 모듈, 파일 시스템, HTTP등 API 제공
비동기 I/O를 지원하며 단일 스레드 이벤트 루프 기반으로 동작 -> 요청 처리 선능이 좋다
따라서, 데이터를 실시간으로 처리하기 위해 I/O가 빈번하게 발생하는 SPA에 적합하다.
JS는 웹, 모바일 하이브리드 앱, 서버사이드(Node.js), 데스크톱(Electron), 머신러닝(TensorFlow.js), 로보틱스(Johnny-Five) 환경을 위한 프로그래밍 언어로 발전
UX 중요성의 상승으로 개발 규모와 복잡도가 상승
이에 필요한 많은 패턴과 라이브러리 출현, 아키텍처 구축을 위해 프레임워크 등장
CBD(Component Based Development) 방법론 기반으로 SPA 대중화
ECMAScript는 JS의 표준 사양 - 각 브라우저 제조사는 ECMAScript 사양을 준수하여 브라우저에 내장되는 JS Engine을 구현
JS는 ECMAScript와 브라우저에서 별도로 지원하는 클라이언트 사이드 Web API, DOM, BOM, Canvas, XMLHttpRequest, fetch, requstAnimationFrame, SVG, Web Storage, Web Component, Web Worker등을 어우르는 개념
- JS는 웹 브라우저에서 동작하는 유일한 프로그래밍 언어.
- JS는 인터프리터 언어(개발자가 별도로 컴파일 작업을 수행하지 않음) JS Engine을 이용
- 멀티 패러다임 프로그래밍 언어 - 명령형, 함수형, 프로토타입 기반 객체지향 프로그래밍 지원