자바스크립트란
웹 페이지를 동적으로 만들고 상호작용을 추가하기 위해 설계된 프로그래밍 언어입니다.
현재는 브라우저뿐만 아니라 서버, 모바일 앱, 데스크탑 애플리케이션 등 다양한 환경에서도 사용됩니다.
즉, 자바스크립트 엔진(JavaScript engine)이라 불리는 특별한 프로그램이 들어 있는 모든 디바이스에서도 동작합니다.
브라우저엔 '자바스크립트 가상 머신’이라 불리는 엔진이 내장되어 있습니다.
엔진의 종류는 다양한데, 엔진마다 특유의 코드네임이 있습니다.
- Chrome, Opera : V8
- Firefox : SpiderMonkey
- IE : 버전에 따라 'Trident’나 'Chakra’
- Microsoft Edge : 'ChakraCore’
- Safari : 'SquirrelFish’
엔진의 동작 원리
- 엔진(브라우저라면 내장 엔진)이 스크립트를 읽습니다(파싱).
- 읽어 들인 스크립트를 기계어로 전환합니다(컴파일).
- 기계어로 전환된 코드가 실행됩니다. 기계어로 전환되었기 때문에 실행 속도가 빠릅니다.
엔진은 프로세스 각 단계마다 최적화를 진행합니다. 심지어 컴파일이 끝나고 실행 중인 코드를 감시하면서, 이 코드로 흘러가는 데이터를 분석하고, 분석 결과를 토대로 기계어로 전환된 코드를 다시 최적화하기도 합니다. 이런 과정을 거치면 스크립트 실행 속도는 더욱 더 빨라집니다.
특징
인터프리터 언어
- 컴파일 없이 브라우저에서 직접 해석: 자바스크립트 코드는 별도의 컴파일 과정 없이 브라우저에서 직접 실행됨.
동적 타이핑
- 변수의 타입이 런타임에 결정됨: 자바스크립트 변수는 선언 시 타입을 지정하지 않으며, 런타임에 타입이 결정됨.
객체 기반 언어
- 모든 것이 객체로 취급됨: 자바스크립트에서는 거의 모든 것이 객체로 취급되며, 프로토타입 기반 상속을 지원함.
함수형 프로그래밍 지원
- 일급 함수 및 고차 함수 지원: 자바스크립트는 함수를 일급 객체로 취급하여 함수형 프로그래밍 패러다임을 지원함.
비동기 프로그래밍
- 이벤트 루프, 콜백, 프라미스, async/await 사용: 자바스크립트는 비동기 프로그래밍을 위한 다양한 메커니즘을 제공하여, 비동기 작업을 쉽게 처리할 수 있게 함.
플랫폼 독립성
- 웹 브라우저와 Node.js에서 동작: 자바스크립트는 브라우저와 서버 환경 모두에서 실행 가능하여, 플랫폼 독립적으로 사용할 수 있음.
풍부한 생태계
- 방대한 라이브러리와 프레임워크, NPM을 통한 패키지 관리: 자바스크립트는 풍부한 생태계를 가지고 있으며, NPM(Node Package Manager)을 통해 쉽게 패키지를 관리하고 사용할 수 있음.
이름의 기원
처음에는 'LiveScript’라는 이름으로 불렸습니다.
그런데, 당시 자바의 인기가 아주 높자, 자바의 ‘동생’ 격인 언어로 홍보하면 도움이 될 것이라는 생각에 이름을 바꿨습니다.
자바와는 다른 언어라고 생각하면 됩니다.
728x90
'공부 > JavaScript' 카테고리의 다른 글
객체, 객체 지향 프로그래밍 (0) | 2024.11.25 |
---|---|
자바스크립트의 동작 원리 - Heap, Stack, Queue (0) | 2024.11.23 |