JavaScript = HTML을 동적으로 조작하기 위한 언어
1989년 팀 버너스리가 최초의 브라우저를 개발했습니다. (HTML 설계 및 구현, HTTP 프로토콜, URL 창시)
1990년대 중반, 웹 브라우저 시장의 약 90%를 장악하던 넷스케이프 커뮤니케이션즈(이하 넷스케이프)
넷 스케이프에서 일하던 브렌던 아이크가 웹 브라우저인 네비게이터2.0에 스킴이라는 프로그래밍 언어를 내장하려다,
스캄이 맘에 안들어서 10일만에 모카(Mocha)라는 언어를 창시하고 네비게이터2.0에 탑재함.
LiveScript로 이름 변경JavaScript로 변경이후 웹 페이지 동작을 향상시키는 경량의 프로그래밍 언어가 인기를 끌자,
Microsoft사 에서 IE 3.0에서 동작하는 ‘JScript’라는 매우 비슷한 언어를 만들었고,
다양한 브라우저들이 JS 문법을 만듭니다.
이렇게 되자 브라우저 간의 호환성(크로스 브라우징) 문제가 발생해 표준화의 필요성이 대두되었습니다.
이를 위해 1996년 11월, 넷스케이프 사는 ECMA 인터네셔널에 자바스크립트의 표준화를 요청합니다.
💡 ECMA 인터네셔널 (Ecma International) : 정보 통신 시스템을 표준화하는 비영리 협회
1997년 7월, JS의 표준화 초판이 완성되었고 2015년도부터 매해 새로운 문법이 추가되어 배포되고 있습니다.
ECMA Script는 ECMA 인터내셔널에서 정의한 ECMA-262 기술 규격을 토대로 만든 표준 스크립트 프로그래밍 언어
ES6 이전까지의 문법은 여러 불편함이 존재했는데,
ES2015 (ES6, 2015년)부터 불편함을 해결해주는 문법들이 대거 추가되어 가독성과 유지보수성이 향상되었습니다.
그래서 ES6+ 이상의 버전들을 모던 JavaScript라고 부릅니다.
ES1 (1997) : 초판ES2 (1998) : ISO/IEC 16262 국제 표준ES3 (1999) : 정규 표현식, try...catchES5 (2009)ES6 (2015), ECMAScriptfor...ofES7 (2016)**)연산자Array.prototype.includesString.prototype.includesES8 (2017)Object.values, Object.entries, Object.getOwnPropertyDescriptors)ES9 (2018)Promise.prototype.finally, async generator, for await...ofES10 (2019)Object.fromEntriesES11 (2020)String.prototype.matchAll, BigInt, globalThis, Promise.allSettledfor...in enumeration ordercf.
JavaScript 언어가 실행될 수 있는 환경을 JavaScript runtime이라고 부릅니다.
자바스크립트는 다양한 환경 등에서 실행이 가능한데, 브라우저와 Node.js이 대표적입니다.
브라우저 마다 각기 다른 자바스크립트 엔진이 존재하며, 종류는 다음과 같습니다.
V8 (Google Chrome, Opera, Edge)spidermonkey (Firefox) JavaScript Core (IOS, Safari)대부분의 브라우저에서 ES6를 지원하지만, Internet Explorer는 지원하지 않습니다.
22년 6월 15일 Explorer 지원이 중단되므로 사실상 거의 다 된다고 보면 됩니다.
Node.js는 구글 V8엔진으로 빌드되어, 브라우저 이외의 환경에서도 JS를 동작하게 해주는 Runtime입니다.