
자바스크립트 란?
자바스크립트의 탄생
모카 → 라이브 스크립트 → 자바스크립트
- 모카
- 넷스케이프 커뮤니 케이션즈 브라우져는, 웹 페이지의 보조적인 기능을 수행하기 위해 브라우져에서 동작하는 경량 프로그래밍 언어를 도입함.
- 라이브 스크립트
- 자바스크립트
자바스크립트의 표준화
크로스 브라우징 이슈로 모든 브라우져에서 정상적으로 동작하는 표준화된 자바스크립트의 필요성이 대두 → 비영리 표준화기구(ECMA)에 자바스크립트의 표준화를 요청
-
크로스 브라우징 이슈
- 브라우져 관련 회사들이 자사 브라우져의 시장 점유율을 높이기 위해 자사 브라우져 에서만 동작하는 기능을 경쟁적으로 추가
- 이로 인해 브라우져에 따라 웹 페이지가 정상적으로 동작하지 않는 크로스 브라우징 이슈 발생
- 모든 브라우져에서 정상적으로 동작하는 표준화된 자바스크립트의 필요성 대두
-
ECMAScript
자바스크립트의 성장의 역사
성장과 역사
초창기
- 웹페이지의 보조적인 기능을 수행하기 위해 한정적인 용도로 사용
- 대부분의 로직은 웹서버에서 주로 실행되었고, 브라우져는 서버로부터 전달받은 html과 css를 단순히 렌더링 하는 수준이였다.
- 화면이 전환되면 서버로부터 새로운 html을 전송받아 웹페이지 전체를 처음부터 다시 렌더링 했다.
Ajax의 등장
- XMLHttpRequest
- 자바스크립트를 이용해 서버와 브라우져가 비동기 방식으로 데이터를 교환할 수있는 통신기능인 Ajax의 등장
- 서버로부터 필요한 데이터만 전송받아 변경해야 하는 부분만 한정적으로 렌더링 하는 방식이 가능해짐
jQuery의 등장
- DOM의 쉬운 제어, 크로스 브라우징 이슈 해결
V8 자바스크립트 엔진등장
- ajax 의 등자으로 웹 애플리케이션 프로그램밍 언어로서의 가능성이 확인된 자바스크립트로 애플리케이션 구축 시도가 늘며, 자바스크립트 엔진의 성능 증가의 필요성이 대두되었고, V8은 이를 만족시켰다.
- v8 자바스크립트 엔진의 등장으로 과거 웹서버에서 수행되던 로직들이 대거 클라이언트(브라우져) 로 이동했다.
Node.js
- 구글 V8 자바스크립트 엔진으로 빌드된 자바스크립트 런타임 환경
- 브라우져의 자바스크립트 엔진에서만 동작하던 브라우져 이외의 환경에서도 동작할수 있도록, 자바스크립트 엔진을 브라우져에서 독립시킨 자바스크립트 실행 환경
- 서버 사이드 애플리케이션 개발에 주로 사용되며, 이에 필요한 모듈, 파일 시스템, HTTP 등 빌트인 API 를 제공
- 비동기 I/O를 지원하며 단일 스레드 이벤트 루프 기반으로 동작 → 요청처리 성능 good
- 따라서 실시간 처리를 위해 I/O 가 빈번하게 발생하는 SPA에 적합하다.
- 하지만 CPU 사용률이 높은 애플리케이션에는 권장하지 않는다.
SPA 프레임 워크
웹 애플리케이션의 복잡도 상승으로, 변경에 유연,확장성이 쉬운 아키텍쳐 구축이 어려워졌다 → 필연적으로 프레임 워크 등장
CBD 방법론을 기반으로 하는 SPA가 대중화 되면서, Angular, React, Vue.js, Svelt 등 SPA 프레임워크/라이브러리 또한 사용층이 증가했다.
자바스크립트와 ECMAScript
ECMAScript
- 자바스크립트의 표준사양 (ECMA-262)
- 프로그래밍 언어의값, 타입, 객체와 프로퍼티, 등 핵심 문법을 규정한다.
- 각 브라우져는 이 사양을 준수해서 브라우져에서 내장되는 자바스크립트 엔진을 구현한다.

자바스크립트의 특징
웹 브라우져에서 동작하는 유일한 프로그래밍 언어
- 자바스크립트는 HTML, CSS와 함께 웹을 구성하는 요소중 하나로, 웹 브라우져에서 동작하는 유일한 프로그래밍 언어다.
인터프리터 언어
- 개발자가 별도의 컴파일 작업을 수행하지 않는 인터프리터 언어다
- 대부분의 모던 자바스크립트 엔진 (크롬의 V8, 사파리의 JavaScriptCore 등 )은 인터프리터와 컴파일러의 장점을 결합해 비교적 처리속도가 느린 인터프리터의 단점을 해결
- 인터프리터는 소스코드를 즉시 실행하고, 컴파일러는 빠르게 동작하는 머신코드를 생성하고 최적화 → 컴파일 단계에서 추가적인 시간이 필요함에도 빠르게 코드를 실행

멀티 패러다임 프로그래밍 언어
- 명령형, 함수형, 프로토타입 기반 객체지향 프로그래밍을 지원하는 멀티 패러다임 프로그래밍 언어이다.
프로토타입 기반의 객체 지향 언어
- 자바스크립트는 클래스 기반 객체지향 언어보다 효율적이면서 강력한 프로토타입 기반의 객체지향 언어다.