자바스크립트란?
자바스크립트가 언어로서 지닌 특징, 무엇을 만들 수 있고, 어떻게 활용하고 있는지.
정의
자바스크립트
웹페이지에 생동감을 불어넣기 위해 만들어진 언어
- 스크립트: 자바스크립트로 작성한 프로그램
- 웹페이지의 HTML 안에서 작성하면, 웹페이지를 불러올때 실행됨
- 컴파일 필요 없이 작성&실행 가능
- 자바스크립트 엔진이 있는 모든 환경에서 동작
-> 다양한 환경에서 쓰이고 있음
자바스크립트 엔진
자바스크립트 가상 머신
종류
- V8: chrome, opera
- SpiderMonkey: FireFox
- Trident/Chakra: IE
- ChakraCore: Edge
- SquirrelFish: Safari
작동 원리
- 엔진이 스크립트를 읽음
- 읽은 스크립트를 기계어로 컴파일
- 기계어 코드 실행
컴파일 각 단계마다, 컴파일이 끝난 후 실행중인 코드를 분석,감시,최적화
브라우저에서 할 수 있는 일
- 모던자바스크립트는 안전한 언어
- 메모리, CPU 등 로우레벨 접근 불가능
- 실행환경에 영향을 많이 받음
Node.js: 파일 입출력, 네트워크 요청 함수 지원 등
브라우저: 웹페이지 조작, 클라이언트-서버 상호작용 등
- 페이지에 새로운 HTML을 추가하거나 기존 HTML, 혹은 스타일 수정하기
- 마우스 클릭이나 포인터의 움직임, 키보드 키 눌림 등과 같은 사용자 행동에 반응하기
- 네트워크를 통해 원격 서버에 요청을 보내거나, 파일 다운로드, 업로드하기(AJAX나 COMET과 같은 기술 사용)
- 쿠키를 가져오거나 설정하기. 사용자에게 질문을 건네거나 메시지 보여주기
- 클라이언트 측에 데이터 저장하기(로컬 스토리지)
브라우저에서 할 수 없는 일
- 파일 입출력, 복사, 실행 제약
- Same Origin Policy: 데이터 교환에 동의한 특수한 코드 없이 탭이나 창끼리 접근 불가
- HTTP 등을 통한 승인 없이 다른 도메인 통신 불가
자바스크립트 강점
- HTML/CSS와 완전히 통합 가능
- 간단한 일은 간단하게 처리 가능
- 모든 브라우저에서 기본 언어로 지원
자바스크립트 ‘너머의’ 언어들
작성 후 실행 전 자바스크립트로 변환을 지원하는 언어들
1. CoffeeScript
2. TypeScript
3. Flow
4. Dart