모던 자바스크립트를 참조하여 작성하였습니다.

자바스크립트란

1995년, 넷스케이프 커뮤니케이션즈는 웹페이지의 보조적인 기능을 수행하기 위해 브라우저에서 동작하는 경량 프로그래밍 언어를 도입하게 되고 이렇게 탄생한 것이 바로 브렌던 아이크가 개발한 자바스크립트입니다.

1996년 3월, 넷스케이프 커뮤니케이션즈의 웹 브라우저인 넷스케이프 내비게이터2 에 탑재되었고 'Mocha'(모카)로 명명되었고 그해 9월 LiveScript(라이브스크립트)로 이름이 변경되었다가 12월에 'JavaScript'라는 이름으로 최종 명명되었습니다.

표준화

마이크로소프트에서 개발된 JavaScript의 파생 버전인 JScript가 등장하게되고 JScript와 JavaScript는 시장 점유율을 높이기 위해서 자사 브라우저에서만 동작하는 기능을 경쟁적으로 추가하기 시작했습니다. 이로 인해 크로스 브라우징 이슈가 발생하게 되면서 표준화된 JavaScript의 필요성이 대두되었고 1996년 11월 넷스케이프 커뮤니케이션즈는 ECMA 인터내셔널에 JavaScript의 표준화를 요청합니다.



👀 크로스 브라우징 이슈란?

HTML, CSS, JS 파일을 기준으로 모든 브라우저에서 동일하게 랜더링 되지 않는 현상.


👀 ECMA 인터내셔널

컴퓨터 시스템의 표준을 관리하는 비영리 표준화 기구.



ECMAScript 버전별 특징

버전 출시 연도 특징
ES1 1997 초판
ES2 1998 ISO/IEC 16262 국제 표준과 동일한 규격을 적용
ES3 1999 정규 표현식, try...catch
ES5 2009 HTML5와 함께 출현한 표준안.
JSON, strict mode, 접근자 프로퍼티, 프로퍼티 어트리뷰트 제어, 향상된 배열
조작 기능(forEach, map, filter, reduce, some, every
ES6(ECMAScript 2015) 2015 let/const, 클래스, 화살표 함수, 템플릿 리터럴, 디스트럭처링 할당, 스프레드
문법, rest 파라미터, 심벌, 프로미스, Map/Set, 이터러블, for...of,
제너레이터, Proxy, 모듈 import / export
ES7(ECMAScript 2016) 2016 지수(**) 연산자, Array.prototype.includes,
String.prototype.includes
ES8(ECMAScript 2017) 2017 async/await, Object 정적 메서드(Object.values, Object.entries,
Object.getOwnPropertyDescriptors)
ES9(ECMAScript 2018) 2018 Object rest/spread 프로퍼티, Promise.prototype.finally,
String.prototype.includes
ES10(ECMAScript 2019) 2019 Object.fromEntries, Array.prototype.flat,
Array.prototype.flatMap, optional catch binding
ES11(ECMAScript 2020) 2020 String.prototype.matchAll, BigInt, globalThis,
Promise.allSettled, null 병합 연산자, 옵셔널 체이닝 연산자,
for...in enumeration order

자바스크립트 성장의 역사

초창기 JavaScript는 단순히 HTML과 CSS파일을 렌더링 해주는 역할만 가지고 있었지만 Ajax, V8 자바스크립트 엔진이 등장하면서 기하급수적으로 성장하게 되었고 데스크톱 애플리케이션과 비교해도 손색없는 성능과 사용자 경험을 제공하는 것이 필수가 되었습니다. 개발 규모와 복잡도가 상승하게 되면서 이전의 개발 방식으로는 개발을 수행하기 어려워졌고 이러한 요구에 발맞춰 나온것이 바로 SPA(Single page aplication) 입니다. SPA가 등장하게 되면서 React, Vue, Svelte 등의 다양한 SPA 프레임워크/라이브러리가 생겨났고 현재가지도 많은 사용층을 보유하고 있습니다.


👀 Ajax란

서버와 브라우저가 XMLHttpRequest를 통해 비동기 방식으로 데이터를 교환할 수 있는 통신 기능

👀 V8 자바스크립트 엔진

웹 애플리케이션을 구축하려는 시도가 늘면서 더욱 빠르게 동작하는 자바스크립트 엔진의 필요성이 대두되었고 2008년 구글에서 개발한 자바스크립트 엔진입니다. V8 엔진 등장 이후 과거 웹 서버에서 수행되던 로직들이 클라이언트(브라우저)로 이동했고, 웹 애플리케이션 개발 영역에서 프론트엔드 개발 영역이 주목받기 시작하는 계기가 되었습니다. 이후 V8 엔진을 기반으로 만들어진 Node.js의 등장으로 자바스크립트는 브라우저를 벗어나 서버 사이드 애플리케이션(SSR) 개발에서도 사용할 수 있는 범용 프로그래밍 언어가 되었습니다.

👀 Node.js란

2009년 Ryan Dhal이 발표한 구글 V8 자바스크립트 엔진으로 브라우저 이외의 환경에서도 자바스크립트를 동작할 수 있도록 빌드된 자바스크립트 런타임 환경입니다. 주로 서버 사이드 애플리케이션 개발에 사용됩니다.

nodeJS 공식 홈페이지



ES6 브라우저 지원 현황

스크린샷 2023-01-03 오후 5 53 11

참조 : Can I use

인터넷 익스플로러를 제외한 모던 브라우저의 대부분은 ES6를 지원하고 있습니다.

만약 지원하지 않는 구형 브라우저를 고려해야 하는 상황이라면 Babel과 같은 컴파일러를 사용해야할 필요가 있습니다.