개요

JavaScript는 웹 브라우저에서 실행되는 유일한 프로그래밍 언어이자, 서버·모바일·데스크톱까지 영역을 확장한 세계에서 가장 널리 사용되는 언어입니다. 1995년 Netscape에서 10일 만에 탄생했지만, ECMAScript 표준화와 Node.js 등장으로 현대 소프트웨어 개발의 중심이 되었습니다.

  • 출시: 1995년 (Brendan Eich, Netscape)
  • 표준: ECMAScript (TC39 위원회)
  • 타입: 동적 타입, 프로토타입 기반 객체지향
  • 최신 표준: ES2025 (ECMAScript 2025)
  • 패키지: npm (300만+ 패키지, 세계 최대)

핵심 특징

특징설명
동적 타입변수 타입을 선언하지 않음 (유연하지만 런타임 에러 가능)
프로토타입 기반클래스 대신 프로토타입 체인으로 상속
일급 함수함수를 변수에 할당, 인자로 전달, 반환 가능
이벤트 루프싱글 스레드 + 비동기 이벤트 루프 모델
클로저외부 스코프 변수를 기억하는 함수
async/awaitPromise 기반 비동기 코드를 동기 스타일로 작성

런타임 환경

브라우저

모든 웹 브라우저에 내장된 기본 실행 환경:

  • DOM 조작, 이벤트 처리, 네트워크 요청
  • Web API: fetch, localStorage, WebSocket, Canvas, WebGL

서버 사이드

런타임엔진특징
Node.jsV8 (Chrome)가장 성숙한 서버 런타임, npm 생태계
DenoV8보안 우선, TypeScript 네이티브, Rust 작성
BunJavaScriptCore최고 속도, 올인원 (런타임+번들러+PM+테스트)

TypeScript

JavaScript의 정적 타입 상위 집합(Superset):

  • Microsoft 개발 (2012년)
  • JavaScript + 타입 시스템 → 컴파일 타임 에러 검출
  • 대규모 프로젝트에서 사실상 필수
  • .ts.js로 트랜스파일하여 실행
// TypeScript 예시
interface User {
  id: number;
  name: string;
}
 
function greet(user: User): string {
  return `Hello, ${user.name}`;
}

주요 프레임워크 / 라이브러리

분류도구
프론트엔드React, Vue, Svelte, Angular, SolidJS
풀스택Next.js, Nuxt, SvelteKit, Remix
백엔드Express, Fastify, Hono, NestJS
모바일React Native, Expo, Ionic
데스크톱Electron, Tauri
테스트Vitest, Jest, Playwright, Cypress

생태계 규모

지표수치
npm 패키지300만+ (세계 최대)
GitHub 프로젝트가장 많은 리포지토리
개발자 수약 1,700만명 (가장 큰 커뮤니티)
Stack Overflow매년 가장 많이 사용되는 언어 1위

장단점

장점:

  • 브라우저 유일 언어 → 프론트엔드 필수
  • Node.js/Deno/Bun으로 풀스택 가능
  • 가장 큰 생태계 (npm, 커뮤니티, 교육 자료)
  • 진입 장벽이 낮음

단점:

  • 동적 타입으로 인한 런타임 에러 (TypeScript로 보완)
  • this 바인딩, 타입 변환 등 언어 특유의 함정
  • 싱글 스레드 (CPU 집약 작업에 부적합)
  • 프레임워크 피로(Framework Fatigue)

관련 항목