본문 바로가기

언어/Node.js

[ Node.js ] Node.js 문법 발전 역사 (JavaScript)

반응형

 

 

JavaScript는 웹 개발에서 가장 중요한 언어 중 하나로, 1995년에 처음 개발된 이후 꾸준히 진화해왔습니다. JavaScript의 역사는 주로 ECMAScript 표준의 발전과 함께 합니다. ECMAScript(줄여서 ES)는 JavaScript의 표준화된 사양이며, 이를 기반으로 JavaScript의 다양한 구현체가 만들어집니다.

JavaScript 문법의 역사는 ES의 주요 버전들에 따라 변화해왔습니다. 다음은 주요 버전들과 그에 따른 문법 변화에 대한 설명입니다.

1. 초창기 (1995년 - 1999년)

  1. **JavaScript 1.0 - 1.5 (1995년 - 1998년)
  • 탄생: JavaScript는 1995년 브렌던 아이크에 의해 넷스케이프 내비게이터(Netscape Navigator) 웹 브라우저에서 사용할 목적으로 개발되었습니다. 초기에는 "Mocha"라는 이름이었으나, 이후 "LiveScript"로 변경되었고, 최종적으로 "JavaScript"로 명명되었습니다.
  • 기본 기능: 초창기 JavaScript는 단순한 폼 검증, 간단한 웹 페이지 상호작용을 위한 간단한 문법과 기능을 제공했습니다.
  1. **ECMAScript 1 (1997년)
  • 표준화: JavaScript의 명확한 표준화를 위해 ECMA 국제기구가 ECMAScript 사양을 발표했습니다. ECMAScript 1은 JavaScript의 최초 표준 버전입니다.
  1. **ECMAScript 2 (1998년)
  • 작은 수정: ECMAScript 1의 작은 수정을 포함한 사양으로, 주로 규격의 편집과 관련된 내용이었습니다.
  1. **ECMAScript 3 (1999년)
  • 주요 추가 사항: Regular Expressions, try/catch 예외 처리, do-while 루프, 더 나은 문자열 처리, 새로운 제어 구문(switch, break, continue) 등이 도입되었습니다. 이 버전은 JavaScript의 기능적 확장을 이루어졌으며, 현재까지도 많은 부분이 사용되고 있습니다.

2. ECMAScript 4의 실패 (2000년대 초반)

  • 대규모 계획: ECMAScript 4는 대규모 업데이트로 계획되었으며, 클래스, 모듈, 제네릭 타입, 네임스페이스 등 많은 복잡한 기능을 도입하려 했습니다.
  • 논쟁과 중단: 도입할 기능들이 너무 복잡하고 개발자 간의 의견 충돌이 심해, 결국 ECMAScript 4의 계획은 중단되었습니다. 이로 인해 JavaScript의 발전이 한동안 정체되었습니다.

3. ECMAScript 5 (2009년)

  • 현대적 기능 추가: JavaScript의 현대화를 위해 다양한 기능이 추가되었습니다. 이 버전은 웹 브라우저와 개발 도구에서 널리 지원됩니다.
  • 주요 기능:
    • 엄격 모드: strict mode를 도입하여 오류를 방지하고 안전한 코드를 작성할 수 있도록 도와줍니다.
    • JSON 지원: JSON 데이터 포맷을 기본으로 지원하게 되었습니다.
    • 더 나은 객체 프로퍼티 정의: 객체 프로퍼티의 getter와 setter 메서드를 지원합니다.
    • 배열 메서드: forEach, map, filter, reduce 등의 고차 배열 메서드가 추가되었습니다.
    • Object 메서드: Object.keys, Object.defineProperty 등의 메서드가 추가되었습니다.

4. ECMAScript 6 (ES2015) (2015년)

  • 큰 변화: JavaScript 역사상 가장 큰 변화 중 하나로, 다양한 새로운 문법과 기능이 도입되었습니다. 이 버전부터는 매년 업데이트가 발표되기 시작했습니다.
  • 주요 기능:
    • letconst: 블록 범위의 변수 선언을 위해 let과 상수 선언을 위해 const가 추가되었습니다.
    • 화살표 함수: this 바인딩을 유지하면서 간결한 함수 표현식을 제공하는 화살표 함수(=>)가 추가되었습니다.
    • 클래스: 객체 지향 프로그래밍을 위한 class 구문이 추가되었습니다.
    • 모듈: importexport를 사용하여 모듈화를 지원하게 되었습니다.
    • 템플릿 리터럴: 백틱(```)을 사용하여 문자열을 작성하고, ${} 구문으로 문자열 내에 표현식을 삽입할 수 있습니다.
    • 디스트럭처링 할당: 배열이나 객체의 요소를 분해하여 변수에 할당할 수 있습니다.
    • 프로미스: 비동기 작업을 처리하기 위한 Promise 객체가 표준으로 도입되었습니다.
    • 기타: Map, Set, WeakMap, WeakSet과 같은 새로운 데이터 구조가 추가되었습니다.

5. ECMAScript 2016 (ES7) - 현재 (매년 업데이트)

ECMAScript는 매년 새로운 기능을 포함하는 업데이트를 발표하고 있습니다. 각 버전은 이전 버전의 문법을 확장하고, 새로운 기능을 추가하며 JavaScript의 기능을 강화해왔습니다. 주요 업데이트는 다음과 같습니다:

  1. **ECMAScript 2016 (ES7)
  • Array.prototype.includes: 배열에 특정 값이 포함되어 있는지 확인하는 메서드가 추가되었습니다.
  • 지수 연산자: 지수 연산을 위한 ** 연산자가 추가되었습니다.
  1. **ECMAScript 2017 (ES8)
  • async/await: 비동기 함수의 처리를 간결하고 동기적으로 보이게 하는 asyncawait 키워드가 도입되었습니다.
  • Object.entriesObject.values: 객체의 키-값 쌍과 값을 배열로 반환하는 메서드가 추가되었습니다.
  1. **ECMAScript 2018 (ES9)
  • 비동기 반복문: for-await-of 루프를 사용하여 비동기 이터러블을 반복할 수 있습니다.
  • Rest/Spread 연산자: 객체에도 확장된 restspread 구문이 도입되었습니다.
  1. **ECMAScript 2019 (ES10)
  • Array.prototype.flatflatMap: 중첩된 배열을 평탄화하거나 배열의 각 요소를 매핑 후 평탄화할 수 있는 메서드가 추가되었습니다.
  • Object.fromEntries: 키-값 쌍의 배열을 객체로 변환하는 메서드가 추가되었습니다.
  • Optional Catch Binding: catch 블록에서 에러 객체를 생략할 수 있게 되었습니다.
  1. **ECMAScript 2020 (ES11)
  • nullish coalescing: ?? 연산자를 사용하여 null 또는 undefined 값만 기본값으로 처리하는 기능이 추가되었습니다.
  • Optional Chaining: ?. 연산자를 사용하여 객체가 존재하지 않을 경우에도 안전하게 접근할 수 있는 기능이 추가되었습니다.
  • Dynamic Import: 모듈을 동적으로 가져올 수 있는 기능이 추가되었습니다.
  1. **ECMAScript 2021 (ES12)
  • String.prototype.replaceAll: 문자열의 모든 일치 항목을 교체하는 메서드가 추가되었습니다.
  • Logical Assignment Operators: &&=, ||=, ??= 연산자가 도입되어 조건부 할당을 간결하게 표현할 수 있습니다.
  • Promise.any: 여러 프로미스 중 가장 먼저 성공하는 프로미스를 반환하는 기능이 추가되었습니다.
  1. **ECMAScript 2022 (ES13)
  • Top-level await: 모듈의 최상위 레벨에서 await를 사용할 수 있는 기능이 도입되었습니다.
  • Array.prototype.at: 배열에서 특정 인덱스의 요소를 음수 인덱싱을 포함하여 안전하게 접근할 수 있는 메서드가 추가되었습니다.
  • Object.hasOwn: 객체의 프로퍼티가 직접적으로 존재하는지 여부를 확인하는 메서드가 추가되었습니다.

6. ECMAScript 2023 (ES14) 및 그 이후

2023년과 이후의 ECMAScript 업데이트는 아직 진행 중이지만, 새로운 기능들은 언어의 사용성을 향상시키고 더 강력한 도구를 제공하는 방향으로 지속적으로 발전하고 있습니다.

요약

JavaScript는 처음에는 단순한 스크립트 언어로 시작했지만, ECMAScript 표준의 발전을 통해 현대적인 프로그래밍 언어로 성장했습니다. 각 버전의 ECMAScript는 JavaScript의 기능과 문법을 확장하고 개선하여, 개발자들이 더 효율적이고 효과적으로 코드를 작성할 수 있게 도와줍니다. 이러한 발전은 웹 애플리케이션의 복잡성과 기능성을 크게 향상시켰습니다.

Node.js와 같은 서버 사이드 개발 환경

반응형