음.. 이 파트에서는 크게 두 가지에 대한 내용이 나옵니다. 아, 이 기준은 내가 중요하다고 생각하는 개념에서 뽑아낸 것이니, 참고해주시길 바랍니다.
그래서 이를 디테일하게 풀어보려 했는데요.
자바스크립트 변천사를 정말 잘 설명해주신 분의 글이 있어, 이 분 글을 보시면, 그래도 그 변천사를 더욱 맛있게(?) 이해할 수 있을 거 같아요.
단순히 기존 글을 따라서 쓰는 것은 의미가 없다고 생각하기에, 더 효율적인 방향에서 이를 링크로만 첨부하기로 했습니다.
자바스크립트의 가장 큰 특징은 무엇일까요?
많은 다양한 특징들이 있겠지만, 가장 큰 특징은 웹 브라우저에서 동작하는 프로그래밍 언어라는 것이죠.
원래 예전에는 '유일'이라는 명칭을 주었는데, 최근에는 pyscript가 나오면서, 이러한 유일의 의미가 많이 희석되는 것 같아요.
또한, 인터프리터 언어이며, 최적화를 위해 일부 소스는 컴파일하고 실행하는 체계를 따릅니다.
또한 명령형, 함수형, 객체지향 프로그래밍 패러다임을 지원하는 언어이며, 동시에 프로토타입이라는, 원형의 객체를 기반으로 새로운 객체를 생성하는 원리에 기반한 프로그래밍 언어라고 할 수 있겠네요.
전술했던 링크를 들어가 이해하는 것이 더 나을 것 같아 링크로 남겨둡니다!
제가 산 책은 2020년 기준이라, 모든 케이스들이 적혀 있지 않았어요.
따라서 ECMAScript의 새로운 제안들을 찾아야 했는데요. TC39 github 문서를 통해 이에 대해 좀 더 알 수 있게 되었어요! 🥰
결국 우리가 원활한 프로그래밍을 위해 사용할 수도 있는 문법이니, 알아두는 게 좋겠죠? 😉
| 버전 | 출시 연도 | 특징 |
|---|---|---|
| ES5 | 2009 | HTML5와 함께 출연한 표준안 JSON, strict mode, 접근자 프로퍼티, 프로퍼티 어트리뷰트 제어, 향상된 배열 조작을 위한 메서드 지원 |
| ES6 | 2015 | let / const, class, template literal, destructuring reassignment, spread, rest parameter, Symbol, Promise, Map / Set, for ... of, generator, Proxy, import / export |
| ES7 | 2016 | 지수 연산자(**), Array.prototype.includes, String.prototype.includes |
| ES8 | 2017 | async/await, Object 정적 메서드(values, entries, keys), Object.getOwnPropertyDescriptors |
| ES9 | 2018 | Object rest/spread 프로퍼티, Promise.prototype.finally, async generator, for await ... of |
| ES10 | 2019 | Object.fromEntries, Array.prototype.flat, Array.prototype.flatMap, optional catch binding |
| ES11 | 2020 | String.prototype.matchAll, BigInt, globalThis, Promise.allSettled, null 병합 연산자, 옵셔널 체이닝 연산자, for ... in enumeration order |
| ES12 | 2021 | String.prototype.replaceAll, Promise.any, 논리연산자와 할당 표현식 추가(??=, ||=, &&=), 숫자 자리수 구분 기호(_), 약한 참조, Intl.ListFormat, Array.prototype.sort 개선 |
| ES13 | 2022 | 클래스 필드, RegExp Match Indices, Top-level await, Ergonomic brand checks for Private Fields, .at(), Accessible Object.prototype.hasOwnProperty, Class Static Block, Error Cause |
워낙 잘 설명되어 있는 글들이 많아서, 사실 이 파트는 쓸 내용이 없어요.
더 놀라운 건, 3장의 내용이 더 쓸 내용이 없더라구요(...)
아무래도 간단한 설치나 브라우저 도구 사용에 대한 설명이기 때문이었어요.
음, 어떻게 쓸지 고민해봐야겠군요. 이상! 🌈