JavaScript

자바스크립트 버전

Lulung 2024. 12. 31. 16:20

1. ECMAScript와 JavaScript

  • JavaScript는 언어의 이름이고, ECMAScript는 그 표준.
  • JavaScript의 모든 버전은 ECMAScript 표준에 기반.
  • ECMAScript는 1997년 첫 표준 발표 이후 지속적으로 업데이트되고 있다.

2. ECMAScript 버전의 개요

ES1 (1997)

  • 의의: 최초의 ECMAScript 표준.
  • 주요 내용: 기본적인 JavaScript 기능 정의. 데이터 타입, 변수, 함수, 객체에 대한 기본적인 정의 포함.

ES2 (1998)

  • 의의: ISO/IEC 국제 표준 준수를 위한 수정.
  • 주요 내용: 기존 기능에서 큰 변화는 없었으나 표준화 과정의 일환.

ES3 (1999)

  • 의의: JavaScript의 기능이 본격적으로 확장된 버전.
  • 주요 내용: 정규 표현식 추가, try-catch 예외 처리, 문자열 메서드 추가, for-in 루프.
  • 중요성: 오늘날에도 많은 코드가 ES3에 기반을 둠.

ES4 (취소됨)

  • 배경: ES4는 JavaScript를 대대적으로 확장하려는 시도였지만, 복잡성과 브라우저 간 호환성 문제로 표준화되지 못함. 주요 제안 사항(클래스, 모듈 등)은 이후 버전(ES6)에 포함.

ES5 (2009)

  • 의의: 10년 만의 대규모 업데이트로 JavaScript의 안정성을 높임.
  • 주요 내용:
    • Strict Mode: 엄격한 문법 체크로 오류를 예방.
      "use strict";
      x = 10; // ReferenceError
    • JSON 지원 추가 (JSON.stringify, JSON.parse).
    • 배열 메서드 추가: map, filter, forEach, reduce 등.
    • 객체 프로퍼티 정의 및 접근 제어 (Object.defineProperty).
    • Array.isArray()로 배열 여부 확인.

ES6 (2015, ECMAScript 2015)

  • 의의: JavaScript의 가장 중요한 업데이트 중 하나.
  • 주요 내용:
    • 새로운 변수 선언: let과 const로 블록 스코프 변수 사용 가능.
    • 화살표 함수: 간단하고 가독성 높은 함수 선언.
      const add = (a, b) => a + b;
    • 템플릿 리터럴: 문자열 내 변수와 표현식 삽입.
      const name = "Alice";
      console.log(`Hello, ${name}!`);
    • 클래스: 객체지향 프로그래밍을 위한 문법.
      class Person {
        constructor(name) {
          this.name = name;
        }
      }
    • 모듈 시스템: import와 export로 모듈화 가능.
    • 디스트럭처링 할당: 배열과 객체에서 값을 추출.
      const [a, b] = [1, 2];
      const { name, age } = { name: "Alice", age: 25 };
    • 스프레드 연산자: 배열과 객체를 쉽게 복사 및 병합.
      const arr = [1, 2, 3];
      const newArr = [...arr, 4, 5];

ES7 (2016, ECMAScript 2016)

  • 주요 내용:
    • Array.prototype.includes: 배열에 값이 포함되어 있는지 확인.
      [1, 2, 3].includes(2); // true
    • 지수 연산자: 숫자의 제곱 연산.
      const square = 3 ** 2; // 9

ES8 (2017, ECMAScript 2017)

  • 주요 내용:
    • async/await: 비동기 코드를 동기식처럼 작성 가능.
      async function fetchData() {
        const response = await fetch("url");
        return response.json();
      }
    • Object.entries/Object.values: 객체의 값을 배열로 변환.
      const obj = { a: 1, b: 2 };
      Object.entries(obj); // [["a", 1], ["b", 2]]

ES9 (2018, ECMAScript 2018)

  • 주요 내용:
    • Rest/Spread 연산자 확장: 객체에서도 사용 가능.
    • 비동기 이터레이터: 비동기 반복문 지원.
      for await (let x of asyncIterable) {
        console.log(x);
      }

ES10 (2019, ECMAScript 2019)

  • 주요 내용:
    • Array.prototype.flat: 중첩 배열을 평탄화.
      [1, [2, [3]]].flat(2); // [1, 2, 3]
    • Object.fromEntries: 키-값 쌍 배열을 객체로 변환.
      Object.fromEntries([["a", 1], ["b", 2]]); // { a: 1, b: 2 }

3. 최신 ECMAScript 기능

  • ES11 (2020): Optional Chaining, Nullish Coalescing Operator 
  • ES12 (2021): String.prototype.replaceAll, 논블로킹 Promise.
  • ES13 (2022): 최적화된 배열 메서드.
  • ES14 (2023): 정렬 알고리즘 개선.

11. 브라우저 지원과 폴리필

  • 최신 ECMAScript 기능은 모든 브라우저에서 지원하지 않을 수 있음.
  • 폴리필(Polyfill) 및 Babel 같은 트랜스파일러를 사용해 호환성 확보.

 

'JavaScript' 카테고리의 다른 글

자바스크립트 비동기  (1) 2025.02.03
변수 선언  (0) 2025.01.02
JavaScript 실행 방법  (1) 2024.12.31
JavaScript의 역사  (0) 2024.12.31
자바스크립트란?  (0) 2024.12.31