코딩 스쿨 JavaScript

언어선택 : HTMLCSSJAVAJAVASCRIPTMYSQLSQL PHP

JavaScript Versions

JavaScript Versions: 주요 버전과 특징

JavaScript는 1995년에 처음 개발된 이후 꾸준히 진화해왔습니다. ECMAScript는 JavaScript의 표준 사양으로, JavaScript의 기능과 구문을 정의합니다. ECMAScript 버전은 JavaScript의 기능을 확장하고 성능을 개선하는 데 중점을 두며, 버전마다 새로운 기능이 추가되었습니다.

이 가이드는 JavaScript의 주요 버전과 각 버전에서 도입된 중요한 기능을 설명합니다. ES3부터 최신 버전까지의 ECMAScript 버전을 다루며, 각 버전의 특징을 알아봅니다.


1. ECMAScript 1 (ES1) – 1997

  • *ECMAScript 1 (ES1)**은 JavaScript의 첫 번째 표준화 버전으로, JavaScript가 웹 브라우저에서 기본적인 동작을 수행할 수 있도록 설계되었습니다. ES1에서는 기본적인 제어문, 객체, 함수 등의 필수 기능을 정의했습니다.

주요 기능:

  • 기본 제어 구조: if, for, while
  • 기본 데이터 타입: Number, String, Boolean
  • 기본 객체: Object, Array, Date, Math

2. ECMAScript 2 (ES2) – 1998

  • *ECMAScript 2 (ES2)**는 ES1에 비해 새로운 기능보다는 ISO 표준과의 일관성을 유지하기 위해 수정된 버전입니다. 주로 표준화 작업이 이루어졌으며, 새로운 기능은 추가되지 않았습니다.

3. ECMAScript 3 (ES3) – 1999

  • *ECMAScript 3 (ES3)**는 JavaScript에 중요한 기능들이 추가된 버전입니다. ES3는 JavaScript가 폭넓게 사용되는 웹 브라우저 환경에서 안정적이고 성능이 개선된 기능들을 제공합니다. 인터넷 익스플로러 6과 같은 브라우저들이 ES3를 지원했습니다.

주요 기능:

  • 정규 표현식 (RegExp) 지원
  • try...catch 구문을 통해 에러 처리 기능 추가
  • for...in 반복문을 사용해 객체의 속성 순회 가능
  • Array 메서드 추가: push(), pop(), shift(), unshift()
  • 엄격하지 않은 delete 연산자 도입 (객체의 속성 삭제)

4. ECMAScript 4 (ES4) – 취소됨

  • *ECMAScript 4 (ES4)**는 JavaScript를 크게 확장하는 야심찬 업데이트가 계획되었지만, 복잡성과 브라우저 간 호환성 문제로 인해 최종적으로 취소되었습니다. ES4에서 논의된 많은 기능들은 후에 ES6(ECMAScript 2015)에서 다시 도입되었습니다.

5. ECMAScript 5 (ES5) – 2009

  • *ECMAScript 5 (ES5)**는 JavaScript의 성능유지보수성을 개선하고, 개발자가 더 안전하고 오류를 방지할 수 있는 코드를 작성할 수 있도록 돕는 기능을 도입했습니다. 모던 웹 애플리케이션에서 ES5가 널리 사용되었으며, 오늘날 대부분의 브라우저가 ES5를 지원합니다.

주요 기능:

  • 엄격 모드 (Strict Mode): "use strict";를 사용해 코드를 더 엄격하게 검사
  • Array 메서드 추가: map(), filter(), reduce(), forEach()
  • Object 메서드 추가: Object.create(), Object.keys(), Object.defineProperty()
  • JSON 지원: JSON.parse(), JSON.stringify() 메서드 추가
  • Function.prototype.bind(): 함수의 this 바인딩을 고정하는 기능
  • Array.isArray(): 배열인지 확인하는 메서드 추가

6. ECMAScript 6 (ES6 / ECMAScript 2015) – 2015

ECMAScript 6 (ES6), 또는 ECMAScript 2015는 JavaScript에 많은 새로운 기능구문을 도입한 중요한 업데이트입니다. ES6는 JavaScript의 생산성유지보수성을 크게 개선했으며, 모듈화클래스 기반 객체지향 프로그래밍을 지원합니다.

주요 기능:

  • letconst: 블록 스코프 변수 선언
  • 화살표 함수 (Arrow Functions): 간결한 함수 표현식
  • 클래스 (Classes): 클래스 기반 객체지향 프로그래밍 지원
  • 템플릿 리터럴 (Template Literals): ${}를 사용한 문자열 삽입
  • 디스트럭처링 (Destructuring): 객체와 배열에서 값 추출
  • 모듈 (Modules): import, export로 모듈화 지원
  • 프로미스 (Promises): 비동기 작업 처리
  • for...of 반복문: 이터러블 객체 순회
  • 기본 매개변수 (Default Parameters): 함수 매개변수에 기본값 지정

7. ECMAScript 7 (ES7 / ECMAScript 2016) – 2016

  • *ECMAScript 7 (ES7)**은 상대적으로 작은 업데이트로, 두 가지 주요 기능이 추가되었습니다.

주요 기능:

  • Array.prototype.includes(): 배열에 특정 요소가 있는지 확인
  • 지수 연산자 (*): Math.pow() 대신 사용할 수 있는 지수 연산자

8. ECMAScript 8 (ES8 / ECMAScript 2017) – 2017

  • *ECMAScript 8 (ES8)**에서는 JavaScript의 비동기 작업을 더욱 간편하게 처리할 수 있도록 async/await 구문이 도입되었습니다. 또한, 객체와 문자열을 더 쉽게 다룰 수 있는 메서드가 추가되었습니다.

주요 기능:

  • async/await: 프로미스를 비동기 함수로 처리
  • *Object.entries()*와 Object.values(): 객체의 키-값 쌍과 값만을 배열로 반환
  • 문자열 패딩 (String Padding): padStart(), padEnd() 메서드
  • Object.getOwnPropertyDescriptors(): 객체의 속성 설명자 반환

9. ECMAScript 9 (ES9 / ECMAScript 2018) – 2018

  • *ECMAScript 9 (ES9)**에서는 비동기 처리, 스프레드 연산자 등에서 개선된 기능이 추가되었습니다. 특히, 비동기 반복문이 새롭게 도입되었습니다.

주요 기능:

  • 비동기 반복문 (for await...of): 비동기 이터러블 객체 순회
  • 객체 스프레드 연산자 (...): 객체 복사 및 병합
  • Promise.prototype.finally(): 비동기 작업이 완료된 후 실행되는 처리
  • 정규 표현식 개선: 명명된 그룹 캡처 및 Lookbehind 추가

10. ECMAScript 10 (ES10 / ECMAScript 2019) – 2019

  • *ECMAScript 10 (ES10)**에서는 배열, 객체 및 문자열 처리를 더욱 쉽게 할 수 있는 기능들이 추가되었습니다.

주요 기능:

  • *Array.prototype.flat()*와 flatMap(): 중첩 배열을 평탄화
  • Object.fromEntries(): 키-값 쌍 배열을 객체로 변환
  • String.prototype.trimStart()trimEnd(): 문자열의 앞뒤 공백 제거
  • 옵셔널 캐치 바인딩: catch 블록에서 오류 객체 생략 가능

11. ECMAScript 11 (ES11 / ECMAScript 2020) – 2020

  • *ECMAScript 11 (ES11)**에서는 옵셔널 체이닝Nullish 병합 연산자 같은 기능들이 추가되어, 더 안전하고 명확한 코드를 작성할 수 있게 되었습니다.

주요 기능:

  • 옵셔널 체이닝 (?.): undefined 또는 null 값에서 에러 없이 속성 접근 가능
  • Nullish 병합 연산자 (??): null 또는 undefined인 경우만 기본값 적용
  • BigInt: 매우 큰 정수를 처리할 수 있는 새로운 숫자 타입
  • Promise.allSettled(): 모든 프로미스가 완료된 후 결과를 반환
  • globalThis: 전역 객체

에 안전하게 접근할 수 있는 표준화된 방법


12. ECMAScript 12 (ES12 / ECMAScript 2021) – 2021

  • *ECMAScript 12 (ES12)**에서는 논리 연산자를 사용한 할당, 숫자 구분자, 정규 표현식에서 새로운 기능들이 추가되었습니다.

주요 기능:

  • 논리 할당 연산자 (&&=, ||=, ??=): 논리 연산과 할당을 결합
  • 숫자 구분자 (_): 긴 숫자에 구분자를 추가해 가독성 향상
  • String.prototype.replaceAll(): 문자열에서 모든 일치하는 값 교체
  • WeakRefs: 객체에 약한 참조를 추가하여 가비지 컬렉션을 방해하지 않음
  • 정규 표현식 개선: 일치되는 텍스트에서 일치 부분 찾기

13. ECMAScript 13 (ES13 / ECMAScript 2022) – 2022

  • *ECMAScript 13 (ES13)**는 최신 버전으로, 일부 추가된 최적화 기능들과 프로그래밍 흐름을 향상시키기 위한 기능들이 포함되었습니다.

주요 기능:

  • at() 메서드: 배열 및 문자열의 음수 인덱싱 지원
  • Error.cause: 오류 체인 정보를 제공하여 오류의 원인을 더 쉽게 파악
  • 정적 블록: 클래스를 정의할 때 정적 블록을 사용해 정적 속성을 초기화

요약

  • ES5엄격 모드, 새로운 배열 메서드 등을 도입해 JavaScript의 기반을 개선했습니다.
  • *ES6(ECMAScript 2015)**는 클래스, 모듈화, 화살표 함수 등 JavaScript의 가장 중요한 기능들을 대거 추가한 주요 업데이트입니다.
  • ES7부터 ES13까지는 새로운 기능과 성능 최적화에 중점을 두며, 비동기 처리, 객체 및 배열 메서드, 옵셔널 체이닝과 같은 유용한 기능들을 추가했습니다.

각 버전에서 추가된 기능들을 잘 활용하면 JavaScript로 더 간결하고 효율적인 코드를 작성할 수 있습니다.


copyright ⓒ 스타트코딩 all rights reserved.
이메일 : startcodingim@gamil.com