1. 자바스크립트 개요

1-1. 자바스크립트

자바스크립트(JavaScript)는 높은 유연성과 확장성을 갖춘 웹 기술의 핵심이며, 지속적인 발전과 함께 그 중요성이 더욱 강조되어 왔다. 웹 개발에서 필수적으로 사용되는 인터프리터 언어로서, 웹 브라우저상에서 동적인 행위를 구현하는 데 있어 핵심적인 역할을 한다. 본래는 1995년에 넷스케이프에서 브라우저 내 스크립트 언어로써 개발되었으나 현재는 다양한 환경에서 사용할 수 있는 언어이다. 발전의 과정을 거치다 현재 ECMAScript라는 표준 기반 위에 구축되었으며, 버전이 업데이트될 때마다 새로운 기능과 향상된 성능을 제공하고 있다. 특히 ES6부터는 클래스, 모듈, 화살표 함수, 비동기 처리를 위한 프로미스와 같은 현대적인 프로그래밍 기능을 도입했다.
자바스크립트는 단순한 웹 애니메이션 구현에서 시작하였지만 현재는 프론트엔드 라이브러리 및 프레임워크(예: React, Vue, Angular 등)와 백엔드 개발(예: Node.js 등)까지 넓은 범위에서 활용된다. 또한, JSON(JavaScript Object Notation) 형식을 통해 데이터 교환의 표준으로 사용되며, 웹뿐만 아니라 모바일 앱, 데스크톱 애플리케이션, 서버 사이드 개발에서도 널리 적용되고 있다.
 

1-2. 자바스크립트의 역사

자바스크립트의 역사는 웹과 그 이상의 다양한 환경에서 사용할 수 있는 프로그래밍 언어로서의 진화를 보여준다. 이러한 단계별 발전은 자바스크립트가 계속해서 중요한 프로그래밍 언어로 남아 있게 하는 원동력이 되었다.
  • 출시 초기와 개발(1995~1996)
    • 1995년에 Netscape에서 Brendan Eich에 의해 Mocha라는 이름으로 웹페이지에 동적인 기능을 추가하기 위해 탄생했다. 초기에는 ‘Mocha’라는 이름으로 시작되었고, 그 후 ‘LiveScript’로 이름이 바뀌었으나 최종적으로 ‘JavaScript’로 브랜드화되었다.
  • ECMAScript 표준화 (1997~1999)
    • 1997년, ECMA 인터내셔널이 자바스크립트의 표준 버전인 ECMAScript를 발표했다. 1999년에는 ECMAScript 3판이 발표되었는데, 이 버전은 많은 브라우저에서 오랜 시간 동안 기본 버전으로 사용되었다.
  • 동반성 시기 (2000~2009)
    • 2000년대 초반 ECMAScript 4판은 개발이 시작된 후 논쟁으로 인해 결국 폐기되었지만, AJAX의 등장으로 웹에서 동적 프로그래밍의 중요성은 크게 증가했다. 동시에 다양한 자바스크립트 라이브러리와 프레임워크, 예를 들면 jQuery와 Prototype이 나타났다.
  • 현대 자바스크립트의 탄생 (2009~2015)
    • 2009년에는 ECMAScript 5판이 발표되었고, ‘strict mode’ 같은 중요한 기능들이 추가되었다. 2010년대 초반에는 Node.js의 출현으로 자바스크립트가 서버 측 프로그래밍 언어로도 활용되기 시작했다. 또한 이때 AngularJS, React, Vue.js와 같은 프론트엔드 프레임워크도 등장하였다.
  • 현대 자바스크립트의 확장 (2015~현재)
    • 2015년에는 ECMAScript 6(ES2015)가 발표되었다. 이 버전에는 클래스, 모듈, 화살표 함수 등의 현대적인 기능들이 추가되었다. 그 이후로는 매년 새로운 ECMAScript 버전이 출시되면서 새로운 기능과 개선 사항이 지속적으로 추가되었다. 또한 웹 어셈블리 같은 기술의 등장으로 브라우저에서 더 높은 성능을 달성하는 방법도 연구되고 발전하고 있다.
 

1-3. ECMAScript

ES(ECMAScript)는 자바스크립트와 같은 스크립트 언어들의 발전과 현대적 특징 도입을 위한 핵심 표준이다. 주기적으로 업데이트되며, 웹 개발자들 사이에서는 ES5, ES6와 같이 버전 명으로 알려져 있다. 이 표준은 ECMA 인터내셔널에 의해 관리되며, 자바스크립트뿐만 아니라 JScript와 ActionScript와 같은 다른 언어들에도 기반이 된다.
ES는 언어의 문법, 타입, 객체, 함수 등 핵심 기능을 명세한다. 그러나 호스트 환경, 즉 웹 브라우저나 서버와 같은 실행 환경에서의 상세 기능이나 API는 포함하지 않는다. 이러한 호스트 환경에서의 특별한 객체나 메서드는 해당 환경에 특화된 것이기 때문이다. ES의 여러 버전들은 시간이 지남에 따라 여러 가지 중요한 기능들과 개선 사항들을 도입하였다. 특히 ES6, 즉 ECMAScript 2015는 클래스, 모듈, 화살표 함수, 프로미스와 같은 현대적인 프로그래밍 언어의 특징들을 도입하여 자바스크립트의 발전에 크게 기여했다.
매년 새로운 버전의 ES가 출시되면서, 언어의 성능과 안정성, 그리고 유용한 기능들이 계속 추가되고 있다. 이러한 지속적인 발전은 개발자 커뮤니티의 활발한 참여와 피드백, 그리고 표준화 과정의 투명성 덕분이다.
 

1-4. 자바스크립트의 특징

1-4-1. 동적 언어

자바스크립트는 동적 언어(Dynamic Language)이다. 이는 변수의 타입을 사전에 선언할 필요가 없으며, 프로그램이 실행되는 도중에 변수의 타입이 변경될 수 있음을 의미한다. 예를 들어, 처음에는 문자열을 저장하는 변수가 나중에는 숫자나 객체를 저장할 수 있다. 이 동적 타입 특성은 개발 속도를 높이고 코드의 유연성을 부여하지만, 동시에 타입 관련된 버그 발생 가능성도 증가시킨다.
💡
TypeScript의 등장 자바스크립트의 동적 타입의 한계를 극복하기 위해, 타입스크립트와 같은 정적 타입 체크를 제공하는 언어가 등장하였다. 타입스크립트는 자바스크립트의 슈퍼셋으로, 컴파일 시점에 타입 검사를 수행하여 버그를 사전에 찾아낼 수 있게 도와준다.
 

1-4-2. 인터프리터 언어

자바스크립트는 인터프리터 언어(Interpreted Language)이다. 대부분의 전통적인 컴파일러 언어와 달리 자바스크립트 코드는 사전에 컴파일되지 않고, 실행 시점에서 해석되고 실행된다. 이는 웹 브라우저와 같은 환경에서 사용자의 장치에서 즉시 코드를 실행할 수 있게 해주기 때문에 웹 개발에 매우 적합하다. 하지만 인터프리터 언어의 특성상 일반적으로 컴파일 언어에 비해 실행 속도가 느릴 수 있다. 최근의 자바스크립트 엔진은 JIT(Just-In-Time) 컴파일 기술을 사용하여 이러한 차이를 크게 줄여왔다.
 

1-4-3. 프로토타입 기반

자바스크립트는 프로토타입 기반(Prototype-based)의 객체 지향 언어이다. 이는 클래스 기반의 전통적인 객체 지향 언어와는 다르게, 자바스크립트는 프로토타입이라는 객체를 통해 상속과 메서드를 공유한다. 객체는 다른 객체의 프로토타입으로부터 속성과 메서드를 상속받을 수 있고, 이를 통해 코드의 재사용과 확장성을 달성한다. ES6부터는 class 문법이 도입되었지만, 이 또한 내부적으로는 프로토타입 기반의 메커니즘을 사용한다.