정의와 탄생 배경
자바스크립트는 웹 페이지에 동적 상호작용을 부여하기 위해 설계된 스크립트 언어입니다.
- 스크립트 형태로 HTML에 직접 삽입되며, 별도의 컴파일 없이 브라우저에서 즉시 실행됩니다.
- ECMAScript 표준을 기반으로 발전했습니다.
자바스크립트 엔진
브라우저는 자바스크립트를 실행하기 위해 고성능 엔진을 내장하고 있습니다.
- 동작 원리
- 파싱 : 코드를 분석해 구문 트리 생성
- 컴파일 : 기계어로 변환 및 최적화 수행(JIT 컴파일)
- 실행 : 최적화된 코드를 고속 실행하며 런타임 중 추가 최적화
브라우저의 역할과 한계
- 브라우저의 역할
- DOM 조작 : HTML/CSS를 동적으로 수정 및 페이지 업데이트
- 이벤트 처리 : 클릭, 키 입력, 드래그 등 사용자 액션 처리
- 비동기 통신 : AJAX, Fetch API로 서버와 데이터 교환
- 브라우저 저장소 : 쿠키, 로컬 스토리지, IndexedDB로 데이터 보존
- 브라우저의 한계
- 파일 시스템 직접 접근 : 사용자의 허가가 필요
- 크로스 도메인 리소스 접근(CORS) : 동일 출처 정책(SOP) 적용
더보기SOP란?
웹 보안 메커니즘으로 한 출처에서 불러온 Document나 Script가 다른 출처의 리소스에 접근하는 것을 제한
여기서의 출처는 URL의 프로토콜, 도메인, 포트를 기준으로 정의
예를 들어, https://a.com에서 http://a.com 또는 https://b.com 같은 다른 출처의 리소스에 접근할 수 없음
CORS란?
다른 출처에서 리소스를 요청할 수 있게 해주는 보안 기능
HTTP 응답 헤더에서 Access-Control-Allow-Origin을 추가하여 특정 출처에서 오는 요청 허용 - 하드웨어 제어 : 카메라/마이크 사용 시 반드시 사용자 권한 획득 필요
자바스크립트 장점
- 완벽한 웹 통합 : HTML/CSS를 직접 연동해 동적으로 UI 구축 가능
- 접근성과 범용성 : 모든 브라우저에서 기본 지원되며, Node.js와 같은 서버 사이드 스크립트로 서버/데스크톱 앱으로 확장 가능
- 풍부성 : npm, 프레임워크(React나 Vue 등), 라이브러리(jquery 등) 방대한 오픈소스
자바스크립의 확장
자바스크립트의 단점을 보완하기 위한 확장 언어
- TypeScript : Microsoft에서 개발한 언어로 정적 타입을 지원, 대규모 프로젝트에서 타입 검사를 통한 안정성 향상
- CoffeeScript : 간결하고 읽기 쉬운 문법을 제공하여 생산성 향상
- Dart : Google에서 개발한 언어로 Flutter 프레임워크와 결합하여 모바일, 웹, 데스크톱 앱으로 개발 가능
'JavaScript' 카테고리의 다른 글
[JavaScript] 자료형 (0) | 2025.02.05 |
---|---|
[JavaScript] 변수와 상수 (0) | 2025.02.05 |
[JavaScript] 엄격 모드(Strict Mode) (0) | 2025.02.05 |
[JavaScript] 자바스크립트 코드 구조 (0) | 2025.02.05 |
[JavaScript] 자바스크립트 실행 환경 설정 (0) | 2025.02.05 |